gpt4 book ai didi

unit-testing - Jenkins 和 JUnit 注释

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

我的测试套件和 Jenkins 有一些问题。

我的测试套件看起来像这样:

@RunWith(Suite.class)
@SuiteClasses( { CompanyRepositoryTest.class,
StudentRepositoryTest.class })
public class ServiceTestSuite {}

在本地主机上运行这个测试套件非常有效,共有 7 个测试显示成功。然而,当 Jenkins 运行测试套件时,它说找不到测试:

junit.framework.AssertionFailedError: No tests found in com.example.suite.ServiceTestSuite

我假设这与 Jenkins 未拾取的注释有关。我可以做些什么来纠正这个问题吗?

编辑:这是我们的 Ant build.xml 中的测试部分。

    <junit fork="yes" printsummary="withOutAndErr" >
<formatter type="xml"/>
<test name="test.ibm.teknikspranget.suite.ServiceTestSuite" todir="${junit.output.dir}"/>
<classpath refid="compile.classpath"/>
</junit>

所以我们实际上是在尝试从 Ant 运行测试套件。我们应该运行每个单独的测试吗?看起来我们正在使用 Jenkins 运行 Ant 1.8.2,所以这应该不是问题。

最佳答案

这是因为您将其作为 JUnit 3 测试而不是 JUnit 4 测试运行。您可以看出这一点,因为 junit.framework.* 类是 JUnit 3,而 org.junit.* 类是 JUnit 4。您的错误消息是:

junit.framework.AssertionFailedError: No tests found in com.example.suite.ServiceTestSuite

如果您使用 JUnit 3 运行程序运行测试,那么它会在您的 TestSuite 中查找名为 suite() 的方法,它不会使用注释。您需要使用 JUnit 4 测试运行器来运行它,例如 org.junit.runner.JUnitCore 或类似的。

如何解决这个问题取决于您在 Jenkins 中调用它的方式。如果您正在运行 ant,请使用 1.7 之后的版本,它应该可以工作。

如果您使用的是 Maven,则使用 JUnit 库的版本 > 4 应该可以,请尝试 4.11。如果由于某种原因这仍然不起作用,您可以通过将以下内容添加到您的 pom 来强制提供者成为 junit 4:

<plugins>
[...]
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.11</version>
<dependencies>
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>surefire-junit47</artifactId>
<version>2.11</version>
</dependency>
</dependencies>
</plugin>
[...]
</plugins>

这是来自:Surefire: Using JUnit .

关于unit-testing - Jenkins 和 JUnit 注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8492687/

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