2

有谁知道,如何在测试中只失败一步并让测试完成所有步骤,使用 Allure 框架!

例如,我有一个包含 3 个测试步骤的测试,每个步骤都有自己的断言。它看起来像这样:

@Test
public void test() 
    step1();
    step2();
    step3();
}

@Step
public void step1() {
    Assert.assertEquals(1, 0);
}

@Step
public void step2() {
    Assert.assertEquals(1, 1);
}

@Step
public void step3() {
    Assert.assertEquals(2, 2);
}

当 step1 失败时,测试方法也会失败。是否有可能用自己的断言完成其他两个步骤并且不会通过测试?就像 TestNG 对 SoftAssert 所做的那样。(org.testng.asserts.SoftAssert)

因此,我希望看到报告,我们可以在其中看到所有损坏和通过的测试步骤(在一种测试方法中),例如 1.4.9 Allure 版本https://github.com/allure-framework/allure-core /releases/tag/allure-core-1.4.9上的图片报告。

4

1 回答 1

1

也许你可以,但你不应该。你打破了测试的概念。测试是通过或失败并描述失败的东西。这不是可以部分失败的东西。

当你编写一个测试时,你应该只包含那些相互绑定的断言。就像第一个断言失败一样,您的功能根本不需要第二个断言。这意味着如果您有不依赖于彼此的断言——您最好制作几个测试方法,它们将完全分开,并且会分别失败。

简而言之,测试不应该在一个失败的步骤之后继续,就是这样。否则——这是一个糟糕的测试。

PS 这就是 JUnit 不允许软断言的原因。

PPS 如果您真的真的需要检查所有这三件事 - 可能的解决方法是使用ErrorCollector

于 2015-03-13T09:28:26.733 回答