TestNG пропуска теста след повдигане на изключение в метод @DataProvider

Малко съм объркан.

Как мога да накарам TestNG да докладва грешка за тест?

// ...
@DataProvider(name = "foo")
public Object[][] provideData () {
    throw new SomeRuntimeException("Some error occurred. The test configuration "
            + "is somehow incorrect.");
}

Това просто ще доведе до пропускане на теста. Изключението дори не се регистрира. Преместването на това в конструктор просто ще регистрира изключението, но това не е достатъчно...

Искам голямо дебело съобщение за грешка.

В момента използването на специален (само)тестов метод върши работата, което поне показва известен неуспешен тест...

Както и да е, би било хубаво да знаете как изглежда дефиницията на testNG за грешка.

Благодаря ви за всякакви съвети!


person Doe Johnson    schedule 26.05.2014    source източник
comment
Можете ли да ни покажете кода, който извиква това? Сигурен ли си, че не е увит по някакъв начин в try/catch?   -  person Chris Thompson    schedule 26.05.2014
comment
Методът, препращащ към dataProvider, не е запознат с никакви изключения по никакъв начин.   -  person Doe Johnson    schedule 26.05.2014
comment
Доколкото разбирам, самият тестов метод не извиква доставчика на данни. Извиква се тестов метод с параметри, предоставени от доставчика на данни.   -  person Doe Johnson    schedule 26.05.2014
comment
DataProvider е част от преамбюла за тестове и като такъв не се докладва като грешка. Ваша отговорност е да улавяте и регистрирате всички грешки в метода DataProvider.   -  person Bob Dalgleish    schedule 26.05.2014
comment
Много лошо. Чудя се дали има някаква възможност за директно задействане на грешка. Не е необходимо да се прави в DataProvider. Имам предвид като цяло, има ли начин?   -  person Doe Johnson    schedule 26.05.2014
comment
Поведението на DataProvider на TestNG наистина е неинтуитивно. Току-що изгубих няколко часа по този въпрос: не можах да разбера защо тестовете ми не се изпълняват. Вашият въпрос и отговорът на Роман обаче ме насочиха на правилния път: оказа се, че изключение е било хвърлено от моя DataProvider. Благодаря и на двамата!   -  person jub0bs    schedule 02.06.2018


Отговори (1)


Ето статията, която предлага справедлив набор от алтернативи с достатъчно подробни обяснения:

Неуспешно вместо Пропускане Тествайте, когато DataProvider на TestNG хвърля изключение

За мен най-добрият начин се случи да добавя тест за доставчици на данни и ето кратка илюстрация на идеята:

public class MyClass {

    @DataProvider(name = "my-data-provider")
    private Object [][] myProvider() {
        // ...
    }

    @Test
    public void testDataProviders() {
        Assert.assertTrue(myProvider().length > 0);
    }

    @Test
    // ... Real tests.

}
person Roman Nikitchenko    schedule 10.01.2015
comment
Въпросът е доста стар, но проблемът все още е много актуален в моите очи. Благодаря ти много! Статията е наистина полезна. - person Doe Johnson; 31.01.2015