gpt4 book ai didi

eclipse - 如何在 Eclipse 中使用 JUnit RunListener?

转载 作者:行者123 更新时间:2023-12-04 12:42:35 27 4
gpt4 key购买 nike

我为 JUnit 编写了一个简单的 RunListener,它与 Maven 配合得很好。我可以通过以下方式为 maven-failsafe-plugin 注册它

<properties>
<property>
<name>listener</name>
<value>com.asml.lcp.middleware.common.jboss.test.tps.TestDocumentationListener</value>
</property>
</properties>

并查看监听器的正确输出。

现在,当我运行测试时,我想在 Eclipse 中注册相同的 RunListener 以在那里看到相同的输出。

这可能吗?为了测试目的并保持一致,最好有相同的输出。

最佳答案

我有一组需要执行数据库的测试。我想在执行开始时创建数据库并在结束时将其删除。

从 maven 我还添加了一个 RunListener 到 maven-surefire-plugin 并且它工作正常。我还添加了一个名为 ismaven 的系统属性变量。当我从 maven 执行测试时,这个变量被初始化,但是当我从 Eclipse 执行测试时,这个变量为空(我使用 System.getProperty 访问该变量)。

<configuration>
<properties>
<property>
<name>listener</name>
<value>com.mycompany.MyRunListener</value>
</property>
</properties>
<systemPropertyVariables>
<ismaven>true</ismaven>
</systemPropertyVariables>
</configuration>

我所有的数据库测试都继承自一个具有 @BeforeClass 和 @AfterClass 方法的类。这些方法检查测试是由 Maven 执行还是由 Eclipse 检查 ismaven 属性的值。如果测试由 maven 执行,则 ismaven 属性有一个值,它们可以做任何事情。但是测试是否由 Eclipse 执行,ismaven 变量为空并且它们启动 (@BeforeClass) 或停止 (@AfterClass) 数据库:
@BeforeClass
public static void checkIfStartDatabase() {
String ismaven = System.getProperty("ismaven");
// If it is not maven, start the database
if (ismaven == null) {
startDatabase();
}
}

@AfterClass
public static void checkIfStopDatabase() {
String ismaven = System.getProperty("ismaven");
// If it is not maven, stop the database
if (ismaven == null) {
stopDatabase();
}
}

此解决方案不能 100% 解决您的问题,但如果您实现它,您可以使用 Eclipse 执行(和调试)一个 JUnit 类的所有测试,您还可以使用 Maven 执行项目的所有测试,并保证您将在执行所有测试之前或之后执行一段代码。

关于eclipse - 如何在 Eclipse 中使用 JUnit RunListener?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10537495/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com