Unit testing 诱惑框架:如何在测试方法中只失败一步

Unit testing 诱惑框架:如何在测试方法中只失败一步,unit-testing,frameworks,report,automated-tests,allure,Unit Testing,Frameworks,Report,Automated Tests,Allure,有谁知道,如何在测试中只失败一步,并允许测试使用诱惑框架完成所有步骤 例如,我有一个由3个测试步骤组成的测试,每个步骤都有自己的断言。它可以是这样的: @Test public void test() step1(); step2(); step3(); } @Step public void step1() { Assert.assertEquals(1, 0); } @Step public void step2() { Assert.asser

有谁知道,如何在测试中只失败一步,并允许测试使用诱惑框架完成所有步骤

例如,我有一个由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);
}
当步骤1失败时,测试方法也会失败。是否有可能用他们自己的断言完成另外两个步骤,并且不通过测试?就像TestNG对SoftAssert所做的那样。(org.testng.asserts.SoftAssert)


因此,我希望看到报告,在报告中,我们可以看到所有被破坏和通过的测试步骤(在一种测试方法中),如图片报告中的1.4.9诱惑发布

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

编写测试时,应该只包含那些相互绑定的断言。比如,如果第一个断言失败,那么第二个断言根本不需要您的功能。这意味着,如果您的断言彼此不依赖,那么您最好创建两个测试方法,它们将完全分离,并且将分别失败

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

这就是为什么JUnit不允许软断言


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

谢谢您的回答!是的,关于测试的概念你们是绝对正确的,但若我需要打破这个概念怎么办?例如:单击注册表上的“提交”按钮后,我想知道下表中出现了哪些数据:-客户;-用户;-帐目;及等等在这种情况下,顺序也很重要softAssert可以向我展示整个“图片”。不幸的是,将ErrorCollerctor与Allure一起使用只会显示Allure报告中的最后一个错误,但是没有失败的测试:)是否有其他方法可以使测试中的一个步骤失败?+1-这非常重要,尤其是当您检查多个字段时-您应该知道所有不正确的数据(所有字段),并且不要对每个字段执行“bug fix>>重新运行测试”。最好在单个测试运行期间收集更多信息。