Как изменить порядок поставщика данных TestNG

Я запускаю сотни тестов для крупной издательской системы и хотел бы распараллелить тесты с помощью 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");
  }
}

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

Спасибо!


person Community    schedule 24.08.2009    source источник


Ответы (1)


@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>

person cegprakash    schedule 16.10.2013