Как изменить порядок тестирования TestNG dataProvider - PullRequest
1 голос
/ 25 августа 2009

Я запускаю сотни тестов для большой издательской системы и хотел бы парализовать тесты с помощью TestNG. Тем не менее, я не могу найти простой способ сделать это. Каждый тестовый пример создает экземпляр этого издателя, отправляет несколько сообщений, ждет публикации этих сообщений, затем выдает содержимое очередей публикации и сравнивает их с ожидаемым результатом. Выполнение этого с таким большим количеством тестов (даже если я паралеллизирую, используя потоки, все равно требуется очень много времени для завершения (1 день или более)).

Мы обнаружили, что при тестировании системы такого типа лучше всего запустить систему один раз, запустить все тесты, чтобы отправить свои сообщения, дождаться публикации, чтобы сделать свое дело, вывести все выходные данные и сопоставить результаты с тестами и проверить , Например, вместо следующего:

@Test
public void testRule1() {
  Publisher pub = new Publisher();
  pub.sendRule(new Rule("test1-a"));
  sleep(10); // wait 10 seconds
  pub.dumpRules();
  verifyRule("test1-a");
}

Мы хотели сделать что-то вроде следующего:

@Test
public void testRule1(bool sendMode) {
  if(sendMode) {
    this.pub.sendRule(new Rule("test1-a"));
  }
  else {
    verifyRule("test1-a");
  }
}

Если у вас есть dataProvider, который выполняет все тесты с помощью sendMode = true, затем выполняет dumpAllRules(), а затем снова проходит через все тесты с sendMode = false. Проблема в том, что TestNG вызывает один и тот же метод дважды, один раз с sendMode = true, за которым следует sendMode = false. Есть ли способ сделать это в TestNG?

Спасибо!

1 Ответ

1 голос
/ 16 октября 2013
@Test
@Parameters({ "sendMode" })
public void testRule1(String sendMode){
  //blah blah
}

Вы можете сделать это так:)

<suite name="xyz">
<parameter name="sendMode" value="normal" />
<test name="sendTest">
    <classes>
        <class name="com.projectPath.testclass" />
    </classes>
</test>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...