запуск TestNG в качестве задачи ant вызывает ошибку

Пока я пытаюсь запустить TestNG из ant как задачу «testng», я получаю странное поведение. TestNG не создает экземпляр класса в методе @BeforeSuite, а в дочерних классах в методе @Test я получаю исключение NullPointerException. Например.

public class TestBase {
    Page mainPage;

    @BeforeSuite
    public void login() {
        ...
        mainPage = new MainPage();
        ...
    }
}

public class Test_1 extends TestBase {
    @Test
    public void test1() {
        AlbumPage albumPage = mainPage.openAP(); //<-- here i get NullPointerException!
        ...
    }
}

Такое поведение я получаю только при запуске TestNG с использованием ant — stacktrace ошибки показывает происхождение где-то глубоко в классах ant, когда он пытается создать задачу, используя «taskdef» из TestNG lib. Итак, в чем проблема? Это баг или я что-то не так делаю?


person endarkened    schedule 29.10.2010    source источник


Ответы (2)


Вероятно, вы делаете что-то не так, вызывая или определяя задачу муравья.

Какой у вас файл build.xml? Что такое трассировка стека?

person Cedric Beust    schedule 29.10.2010
comment
Нет, делаем все, как описано здесь testng.org/doc/ant.html. Это работает нормально, когда я не передаю экземпляры из родительского класса в одноуровневый, создавая экземпляр MainPage в классе Test_1. - person endarkened; 30.10.2010
comment
Проблема может быть в том, что TestNG создает два разных экземпляра: один из TestBase для вызова @BeforeSuite, а другой из Test_1 для выполнения @Test - единственное объяснение, которое я вижу. Вопрос к вам как к разработчику фреймворка. - person endarkened; 30.10.2010

Понятно. Проблема была в методе @BeforeTest. Он вызывается не перед каждым методом @Test, а только перед первым в теге. Если собрать все тесты в один набор - результат предсказуем.

person endarkened    schedule 01.11.2010