TestNG продолжает выполнять тестовые классы, даже если предыдущий класс не удался - PullRequest
5 голосов
/ 29 января 2012

Почему TestNG продолжает выполнять тест, если один TestCase (Class) не прошел?

Например, результат теста:

1 test passed, 1 test failed.(3599,0 s)
    TestSuite FAILED
        run FAILED: check5=3 Expected: <3> got: <5>
        run passed (1.0s)    // <--- this should not have been executed

почему второй прогон даже выполняется? мой testngsuite.xml:

<suite name="TestSuite_03">
    <test name="TestCase_17">
        <groups>
            <run><include name="functest"/></run>
        </groups>
        <classes>
            <class name="TestStep_003" desc="will fail" />
            <class name="TestStep_012" desc="will pass" />
        </classes> ...

Я использую Maven, TestNG и Java через NetBeans

моя структура:

public abstract class TestCommon
{
    @BeforeSuite(groups={"functest})
    public void BeforeSuite()
    {
        // clean report folder
    }
    @BeforeTest(groups={"functest})
    public void BeforeTest()
    {
        // start selenium browser
    }
    @AfterMethod(groups={"functest})
    public void AfterMethod()
    {
        // check for failure and capture screenshot
    }
    @AfterTest(groups={"functest})
    public void AfterTest()
    {
        // close browser
    }
}


public class TestStep_003 extends TestCommon
{
    @Test(groups = {functest})
    public void run()
    {
        assertThat(5, Matchers.equalTo(3)); // will fail
    }
}
public class TestStep_012 extends TestCommon
{
    @Test(groups = {functest})
    public void run()
    {
        assertThat(5, Matchers.equalTo(5)); // will pass
    }
}

1 Ответ

5 голосов
/ 29 января 2012

Вы должны сделать свои тестовые случаи независимыми, потому что модульность уменьшает сложность: Если тесты зависят от , вам всегда нужно будет запускать все тестовые случаи, если последний провалился, и необходимо проверить все тесты. случаи, если они могли вызвать ошибку / сбой.

С независимыми тестами вы можете запустить их все, например, во время ночной сборки, даже если некоторые из них выйдут из строя. Или выполнить конкретный в изоляции. И вам не нужно беспокоиться о заказе тестов. Именно поэтому почти все участники тестов выполняют все тесты и не дают никаких гарантий относительно их заказа.

Особенно это касается модульных тестов. Для нескольких интеграционных и приемочных тестов может быть приемлема некоторая зависимость. В этом случае используйте функцию зависимости TestNG .

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