当前位置: 首页 > 知识库问答 >
问题:

在junit4中继续执行测试,即使其中一个断言失败

章禄
2023-03-14

我使用Jfunc构建了我现有的框架,它提供了一个即使测试用例中的一个断言失败也能继续执行的工具。Jfunc使用junit3. x框架。但是现在我们正在迁移到Junit4,所以我不能再使用Jfunc,而是用junit4.10 jar代替了它。
现在的问题是,因为我们已经在我们的框架中广泛使用了jfunc,并且使用junit4,我们希望让我们的代码继续执行,即使其中一个断言在测试用例中失败。
有人对此有任何建议/想法吗,我知道在jUnit中测试需要更原子,即每个测试用例一个断言,但出于某种原因,我们不能在我们的框架中这样做。

共有3个答案

姜晨
2023-03-14

您还可以使用assertj-soft断言

@Test
public void testCollectErrors(){
   SoftAssertions softly = new SoftAssertions();
   softly.assertThat(true).isFalse();
   softly.assertThat(false).isTrue();
   // Don't forget to call SoftAssertions global verification !
   softly.assertAll();
}

还有其他方法可以使用它,而无需手动软调用。assertAll();

  1. 使用规则
  2. 具有自动关闭功能
  3. 使用静态assertsoftware方法
燕寒
2023-03-14

我也使用ErrorCollector,但也使用assertThat并将它们放在try-catch块中。

import static org.junit.Assert.*;
import static org.hamcrest.Matchers.*;

@Rule
public ErrorCollector collector = new ErrorCollector();

@Test
public void calculatedValueShouldEqualExpected() {
    try {
        assertThat(calculatedValue(), is(expected));
    } catch (Throwable t) {
        collector.addError(t);
        // do something
    }
}
岳亮
2023-03-14

您可以使用ErrorCollector规则执行此操作。

要使用它,请首先将规则作为字段添加到测试类中:

public class MyTest {
    @Rule
    public ErrorCollector collector = new ErrorCollector();

    //...tests...
}

然后将断言替换为对收集器的调用。检查(…)

例如

@Test
public void myTest() {
    collector.checkThat("a", equalTo("b"));
    collector.checkThat(1, equalTo(2));
}
 类似资料:
  • 问题内容: 我已经使用Jfunc构建了现有框架,该框架提供了即使测试用例中的一个断言失败时也可以继续执行的功能。Jfunc使用junit 3.x框架。但是现在我们正在迁移到junit4,所以我不能再使用Jfunc,而已将其替换为junit 4.10 jar。 现在的问题是,因为我们在框架中广泛使用了jfunc,并且使用junit 4,我们希望使我们的代码即使在测试用例中一个断言失败时也可以继续执行

  • 问题内容: 编辑:切换到一个更好的示例,并阐明了为什么这是一个真正的问题。 我想用Python编写在断言失败时继续执行的单元测试,这样我就可以在一个测试中看到多个失败。例如: 在这里,测试的目的是确保Car’s正确设置其字段。我可以将其分解为四个方法(这通常是个好主意),但是在这种情况下,我认为将其保留为测试单个概念的单个方法(“对象已正确初始化”)更容易理解。 如果我们认为最好不要破坏该方法,那

  • 问题内容: 我正在通过Java与Eclipse和TestNG框架一起使用Selenium RC。我有以下代码片段: 第一个断言失败,执行被停止。但我想继续进一步的代码片段。 问题答案: Selenium IDE使用验证执行软断言,这意味着即使检查失败,测试仍将继续,并且可以在测试结束时或在发生硬断言时报告失败。 使用TestNG,可以通过使用自定义测试侦听器来拥有这些软断言。我已经在博客上记录了如

  • 我按照cypress在他们的文档中推荐的方式编写测试,即每个测试有多个断言,但是用这种方式编写测试时会出现一个问题,那就是如果断言失败,测试执行就会停止。 我希望每个测试有多个断言,如果其中一个失败,测试将失败,但将继续测试执行,所以在最后,我将能够看到测试中失败的所有断言,而不仅仅是第一个失败的断言。 提前感谢!

  • 我在单元测试中使用groovy脚本。我有以下代码片段,我在单个测试脚本中使用多个断言。 第一个断言失败并停止执行。但我想继续进一步的代码片段。 与selenium中的软断言类似,我应该如何收集groovy中的所有失败异常。