JUnit 5中是否有任何机制可以在测试中运行所有assert,即使中间的assert失败?例如:
@Test
public void unitForTest_SomeScenario_ShouldReturn() {
//Act
var myObj = myServ.getMyObj();
//Arrange
assertThat(myObj).isNotNull();
assertThat(myObj.getName()).isEqualTo("Steve"); //failed assert
assertThat(myObj.getLastName()).isEqualTo("Gates");
}
我的意图是运行所有断言,并跟踪失败的只是第二个,而不是第三个和第一个。
您可以使用JUnit5的assertAll。
例如:
@Test
public void unitForTest_SomeScenario_ShouldReturn() {
String name = "y";
assertAll(
() -> assertThat(name).isNotNull(),
() -> assertThat(name).isEqualTo("x"), // failed assert
() -> assertThat(name).isEqualTo("y"),
() -> assertThat(name).isEqualTo("z") // failed assert
);
}
将失败,并给出以下详细响应:
Expecting:
<"y">
to be equal to:
<"x">
but was not.
Comparison Failure:
Expected :x
Actual :y
<Click to see difference>
Expecting:
<"y">
to be equal to:
<"z">
but was not.
Comparison Failure:
Expected :z
Actual :y
<Click to see difference>
org.opentest4j.MultipleFailuresError: Multiple Failures (2 failures)
注意:由于您问题上的一些评论暗示,使用单独的测试(而不是一个测试有多个断言)可能更好地表达这一点,但是,只要多个断言是单个“概念断言”的一部分,那么我就可以肯定地看到使用assertAll的情况。
我是JMeter和断言概念的新手。当我试图执行一个JMX文件(包含JMeter中的断言)时,遇到了以下错误消息: 断言错误:错误断言失败:真断言失败消息:测试失败:变量(搜索结果)不相等/接收:找不到[[[]]]]比较:找不到[[[]]]]] 脚本的执行方式如下:$java-jar./apache-jmeter-2.10/bin/apachejmeter.jar-t./jmeter-master/
我在flutter上使用firebase做了一个简单的婴儿名字项目,在成功完成教程后,该应用程序出现了这样的错误:“package:firebase_demo/main.dart':Failed assertion:line 86 pos 16:'map['votes]!=null':is not true。” 同样的帮助。
使用JUnit5 assertAll,我调用一个方法来执行断言,但注意到当断言失败时,测试实际上通过了。调用下面这样的方法似乎被忽略了。 不过这很管用
问题内容: 我正在学习Xcode中的视图调试器,并通过 Debug > View Debugging> Capture View Hierarchy捕获视图层次结构 。但是,当我在应用程序中尝试该操作时,出现以下错误: -[UITextView _firstBaselineOffsetFromTop],/ BuildRoot / Library / Caches / com.apple.xbs /
我是新手,不会摆弄它。所以,请对我有耐心。 单击PopupMenuButton的特定菜单项时,将引发以下异常,但始终只能第二次: 'package:flutter/src/widgets/navigator.dart':失败断言:line 1846 pos 12:'!_debuglocked':不是true。 正如您所看到的,有私有变量用于保存WordPair对象,但也用于菜单选择。 _popup
我正在使用JUnit自动化功能测试。我遇到了一个问题:如果我遵循规则“每个测试方法一个(重要的)断言”,那么每个测试用例最终会有一堆6行测试方法(17个是迄今为止最大的数字)。如果我将它们全部放入一个测试方法中,我必须注释掉失败的断言,否则一半的测试永远不会启动。 我不喜欢第一种方式,因为它启动浏览器的次数太多,而且浏览器启动登录/注销似乎比测试运行本身更“昂贵”和耗时。 第二种方法也不好,因为它