TestNG - Поставщик данных на уровне тестирования тестов - PullRequest
0 голосов
/ 17 января 2012

Я попытаюсь объяснить мой сценарий здесь, чтобы было ясно, чего я хочу.

У меня есть набор методов в классе, который выполняет несколько тестов, все они связаны друг с другом и должнызапускаться в последовательности, поэтому они имеют DependsOnMethod в своей аннотации @Test.Я также использую DataProvider, который возвращает 7 значений за тест (n строк и 7 столбцов).Теперь, когда я помещаю этот поставщик данных на уровень метода, он читает все строки и выполняет метод 1 с каждым доступным набором данных, а затем переходит к следующему методу.

Я хочу, чтобы эта последовательность была изменена, я хочу, чтобы онаЗапустите метод 1 (набор данных 1), метод 2 (набор данных 1), метод 1 (набор данных 2), ... Я знаю этот вопрос у многих людей.Причина, по которой я снова отправляю этот вопрос, состоит в том, что я попробовал все предложенные идеи.

При использовании заводской аннотации мой тест вообще не запускается в Eclipse, давая NullPointerException.Я использую аннотацию @BeforeClass, которая никогда не запускается, если я использую заводскую аннотацию.Я даю эту фабричную аннотацию о конструкторе класса.

Я попробовал флаг group-by-instance в файле testng.xml, но это тоже не удалось: он запускает тесты в той же последовательности.

Пожалуйста, кто-то может объяснить все это в правильномзаказать для меня?Если это возможно на примере, я уверен, что этого можно достичь, но я думаю, что-то что-то упустил.

Любая помощь с этим очень ценится.

PS Я не очень хорошс Java, и я использовал TestNG в течение последних 2-3 недель.

Спасибо, Джон

Ответы [ 2 ]

0 голосов
/ 17 января 2012

Самый простой способ - вызвать эти методы вручную:

@Test(dataProvider = ...)
public void f(int n1, int n2) {
    method1(n1, n2);
    method2(n1, n2);
}

Однако группировка по экземплярам должна была сработать. Можете ли вы отправить небольшой класс по электронной почте в список пользователей testng, чтобы я мог его воспроизвести?

Спасибо.

0 голосов
/ 17 января 2012

С аннотацией «Набор данных»: JavaDoc:

org.unitils.dbunit.annotation.DataSet
@Target(value={METHOD, TYPE})
@Retention(value=RUNTIME)
@Inherited

Аннотация, указывающая, что набор данных должен быть загружен до запуска теста.

Если класс аннотирован, набор тестовых данных будет загружен перед выполнением каждого из тестовых методов в классе. Имя файла набора данных может быть указано явно. Если такое имя файла не указано, сначала будет проверен набор данных с именем «classname». «Testmethod» .xml, если такого файла не существует, будет «classname» .xml. Если этот файл также не существует, будет сгенерировано исключение. Имена файлов, начинающиеся с '/', считаются абсолютными. Имена файлов, которые не начинаются с '/', относятся к текущему классу.

Метод тестирования также может быть аннотирован с помощью DataSet, в этом случае вы указываете набор данных, который необходимо загрузить перед запуском этого метода тестирования. Опять же, имя файла может быть явно указано или, если оно не указано, будет использоваться значение по умолчанию: сначала «classname». «Methodname» .xml и, если этот файл не существует, «classname» .xml.

Примеры:

 @DataSet
  public class MyTestClass extends UnitilsJUnit3 {

      public void testMethod1(){
      }

     @DataSet("aCustomFileName.xml")
      public void testMethod2(){
      }
  }

Загрузит файл набора данных с именем MyTestClass.xml или MyTestClass-testMethod1.xml для testMethod1 в том же каталоге, что и класс. А для testMethod2 загружается файл набора данных с именем aCustomFileName.xml в том же каталоге, что и класс.

  public class MyTestClass extends UnitilsJUnit3 {

      public void testMethod1(){
      }

     @DataSet
      public void testMethod2(){
      }
  }

Не загружает набор данных для testMethod1 (нет набора данных на уровне класса). Загрузит файл набора данных с именем MyTestClass.xml или MyTestClass.testMethod2.xml для testMethod2. Автор:

Филипп Невен

Тим Дюшейн

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