我正在迁移到JUnit5,我想知道在JUnit5中是否有一种简单的方法可以知道测试何时失败,就像我们在使用TestWatcher的JUnit4中那样。
我做了一些研究,发现了一些类似的问题,但仍未解决,比如这样一个问题:https://github.com/junit-team/junit5/issues/542因为大多数问题都很老,所以我想问一下,以防最近有一个解决方案。
想法是能够做一个屏幕截图或添加一些消息到我的日志。那么,是否有一个监听器或扩展或其他东西可以快速地允许我管理webdriver测试的失败/通过/跳过?提前道谢!
好的,谢谢。比我预想的要难,但最终还是成功了。正如您所指出的,我们需要创建一个实现BeforeTestExecutionCallback
和AfterTestExecutionCallback
的外部类(例如WatcherExtension
),然后使用扩展给出的上下文计算异常。在这个类中,我们可以添加如下内容:
@Override
public void afterTestExecution(ExtensionContext extensionContext) throws Exception {
Method testMethod = extensionContext.getRequiredTestMethod();
Boolean testFailed = extensionContext.getExecutionException().isPresent();
if (testFailed) {
if (!TESTDATA.excluded.contains(testMethod.getName())) {
takeScreenshot(testMethod);
logErrorMessage("Test " + testMethod.getName() + " failed on " + getAppVersion() + " using " + TESTDATA.browser);
} else {
logInfoMessage("Test " + testMethod.getName() + " was skipped on " + getAppVersion() + " using " + TESTDATA.browser);
}
} else {
logInfoMessage(testMethod.getName() + " was successfully executed on " + getAppVersion() + " using " + TESTDATA.browser);
}
最后,您需要将这个注释添加到您的测试类中:
@ExtendWith(WatcherExtension.class)
public class MyTest extends TestFactory {
@Test
public void testMyTest() { //whatever }
}
我个人认为这是一个真正基础的东西,应该在未来的版本中由JUnit5直接实现。谢谢!
我在使用JUnit5进行maven测试时遇到了一个奇怪的问题。 我用junit工具为每个方法创建了测试套件,每个测试都是这样开始的。 和要测试的类
我有一个Selenium Python测试来检查一个网站是否有效工作。 当页面加载时,开始和结束日期将以这种格式显示,并且按钮将变灰,直到设置正确的日期格式(如屏幕截图所示) 我的硒代码:
我使用的是JUnit5Vintage,所以我的测试任务同时运行JUnit4和JUnit5测试。
在我的基于gradle和kotlin的项目中,我有一些子模块。it模块的生成配置(Build.gradle.kts): 我尝试在这个模块中运行一些简单测试 当我试图运行测试时,我得到错误: 但是,如果从我的构建配置中删除id(“io.spring.dependency-management”)版本“1.0.7.release”,并将使用类似这样的Spring Boot版本(“org.springf
上下文:我想编译和测试一个多模块项目中的所有模块,但如果任何一个失败,编译或测试,我希望整个构建失败。 默认配置要么在第一次失败时停止,要么在测试失败后跳过模块 跑步: 在第一个失败的模块处停止。 如果添加: mvn clean Install-FAE//结束时失败 null 响应非常感谢-否则,如果有多个问题,我们必须在构建服务器上重复运行测试-消耗大量时间。
问题内容: 我写了JUnit5扩展。但是我找不到方法如何获得测试结果。 扩展看起来像这样: 有什么提示如何获得测试结果? 问题答案: 正如其他答案所指出的那样,JUnit会将失败的测试与异常进行通信,因此可以使用来了解发生的情况。请注意,这很容易出错,因为以后运行的扩展程序仍可能无法通过测试。 另一种方法是注册自定义TestExecutionListener。不过,这两种方法都有点round回