gpt4 book ai didi

java - 第三方库中是否有用于 JUnit @Category() 的接口(interface)

转载 作者:行者123 更新时间:2023-11-30 07:00:08 25 4
gpt4 key购买 nike

我的父 pom 包含 maven-surefire-pluginmaven-failsafe-plugin定义 <groups> 的配置和<excludedGroups>使用我的界面 com.adam.testutil.IntegrationTest 的参数如下对于 JUnit 4 @Category注释,将任何测试标记为集成测试。

父 pom 下的所有模块(不仅仅是具有集成测试的模块)都需要 com.adam.testutil.IntegrationTest在他们的类路径上,以便surefire和failsafe插件运行,否则他们会抛出 ClassNotFoundException .

因此该类必须位于所有模块都必须声明为依赖项的模块中。我更愿意将其声明为父 pom 中的依赖项因此所有模块都会自动继承它,但这会产生循环依赖问题,导致 mvn 停止运行。

事实上,即使模块中没有单元或集成测试,该模块仍然需要声明依赖关系。

我还必须使模块包含 com.adam.testutil.IntegrationTest构建顺序中的第一个模块,否则它将在任何新系统上的首次安装中不可用。我遇到了先有鸡还是先有蛋的困境 - 我不能就这么跑 mvn install在空白存储库中,因为与 IntegrationTest 的依赖关系尚未在本地存储库中。

事实上,我并不是特别想创建一个新模块只是为了提供 IntegrationTest 。如果 JUnit 包含一个合适的 org.junit.IntegrationTest ,事情会简单得多。图书馆的类(class)。

虽然我认为@Cateogry是注释测试以将其标记为集成测试的好方法,在多模块项目中它具有所有这些缺点。

是否有一个相关的或适当命名的接口(interface)可供我使用,而不必拥有自己的接口(interface)?

在最坏的情况下,就 JUnit 而言,@Category 、 maven-surefire-plugin 和 maven-failsafe-plugin ,我可以使用 JDK 中的接口(interface),例如java.lang.Cloneable - 尽管任何阅读代码的人都会想知道到底发生了什么。

我本来希望 JUnit 能有一些东西,但我找不到任何有用的东西。

我可以在我的父 pom 中添加对第三方库的依赖,一切都会好起来的。

我会接受任何人从第三方库建议合适接口(interface)的答案,其中接口(interface)的名称不会引起任何第一次阅读代码的人立即提出问题。

import org.junit.experimental.categories.Category
import com.adam.testutil.IntegrationTest

@Category(IntegrationTest.class)
public DbAndJpaIntegrationTests {
...
}

.

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<excludedGroups>com.bp.gis.util.HeavyTest
</excludedGroups>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<includes>
<include>**/*.java</include>
</includes>
<groups>com.bp.gis.util.HeavyTest</groups>
</configuration>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
</goals>
</execution>
</executions>
</plugin>

最佳答案

你的问题似乎表明IntegrationTest接口(interface)的目的只是标记哪些测试由surefire执行,哪些测试由failsafe执行。

在这种情况下,您可以使用命名约定。故障安全的默认值是 described in the docs :

<includes>
<include>**/IT*.java</include>
<include>**/*IT.java</include>
<include>**/*ITCase.java</include>
</includes>

万无一失,the defaults are :

<includes>
<include>**/Test*.java</include>
<include>**/*Test.java</include>
<include>**/*TestCase.java</include>
</includes>

关于java - 第三方库中是否有用于 JUnit @Category() 的接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41065441/

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