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

JUnit-延迟断言失败

太叔弘壮
2023-03-14

我正在使用JUnit自动化功能测试。我遇到了一个问题:如果我遵循规则“每个测试方法一个(重要的)断言”,那么每个测试用例最终会有一堆6行测试方法(17个是迄今为止最大的数字)。如果我将它们全部放入一个测试方法中,我必须注释掉失败的断言,否则一半的测试永远不会启动。

我不喜欢第一种方式,因为它启动浏览器的次数太多,而且浏览器启动登录/注销似乎比测试运行本身更“昂贵”和耗时。

第二种方法也不好,因为它在任何情况下都会引入大量的手动工作来管理它。

所以,我的问题是:1。对于这种情况,最佳实践是什么?2。有没有办法将测试失败推迟到测试结束?我的意思是,不太重要的断言,它不会停止测试运行,但最终会导致测试失败。

UPD:是的,我在用硒。每个测试类都有一个父类来统一它们的设置。

共有2个答案

单于正业
2023-03-14
@BeforeClass
public static void beforeClass(){

    launchBrowser();

}

@Before
public void before() {

    login();

}

@AfterClass
public static void beforeClass(){

    killBrowser();

}

这可能是你问题的答案

卫焕
2023-03-14
  1. 您可以使用@BeforeClass和@AfterClass为每个测试类启动和关闭浏览器一次,也可以创建一个规则来启动浏览器并将其与@ClassRule一起使用
 类似资料:
  • 问题内容: 今天,我看到了一个带有Java断言而不是JUnit断言的JUnit测试用例-相对于另一个而言,优先选择一个优点还是缺点? 问题答案: 在JUnit4中,JUnit断言引发的异常(实际上是Error)与java 关键字(AssertionError)引发的错误相同,因此它与堆栈跟踪完全相同,除了您无法分辨出其区别。 话虽这么说,断言必须在JVM中使用特殊标志运行,导致许多测试似乎通过了,

  • 什么叫中断延迟 所谓中断延迟,其实在编写裸机程序中经常被用到,我们时常需要靠中断来捕获相关的数据或者事件输入,然后在中断中置起相关标志位,在主函数中的死循环中检查这个标志位,如果置起,说明中断发生了,然后进行相应的处理。与之类似的,freeRTOS的中断延迟是一个道理,中断服务函数不做相关的处理,而是由随后运行的任务来处理,这相比直接在中断服务函数中处理会有一个延迟,好处是不会占用太多的中断时间,

  • 有没有Hamcrest可以让我明确断言,返回对象的的方法的结果至少有一个对象包含具有特定值的属性? 例如: 测试下的方法返回一个的集合。我需要断言至少有一个人叫彼得。

  • JUnit 5中是否有任何机制可以在测试中运行所有assert,即使中间的assert失败?例如: 我的意图是运行所有断言,并跟踪失败的只是第二个,而不是第三个和第一个。

  • null 即使抛出异常,也可以观察到(并测试)一些副作用。我的示例测试代码如下: 从抛出的异常中创建另一个软断言的最佳方法是什么?使用原始TestNG API,我可以简单地编写 但是AssertJ似乎没有提供任何类似的东西。到目前为止,我的最佳选择是向catch块添加如下所示的smth: 如何使正在测试的代码引发的异常显示为结果的原因(或禁止的异常)?目前,我做以下工作: --但更优雅的版本是非常

  • 我试着 我在调试时获得和是。 如何在使用时断言大于条件