有没有人知道,如何在测试中只失败一步,并允许测试完成所有步骤,使用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。
答案 0 :(得分:1)
也许你可以,但你不应该。你打破了测试的概念。测试是通过或失败的描述失败的事情。这不是可以部分失败的东西。
编写测试时,应仅包含彼此绑定的断言。就像第一个断言失败一样,你的功能完全不需要第二个断言。这意味着如果你有不相互依赖的断言 - 你最好制作一些测试方法,它们将完全分开并且会单独失败。
简而言之,测试不应该在失败的步骤之后继续进行。否则 - 这是一个糟糕的测试。
P.S。这就是JUnit不允许软断言的原因。
P.P.S如果你真的真的需要检查所有这三件事 - 可能的解决方法是使用ErrorCollector。