第三方库中是否有一个接口,用于Junit @Category()



我的父pom包含 maven-surefire-pluginmaven-failsafe-plugin配置定义 <groups><excludedGroups> params params params在下面使用我的接口 com.adam.testutil.IntegrationTest for junit 4 @Category注释,以标记任何作为集成测试的测试。

父pom下的所有模块(不仅仅是具有集成测试的模块)都需要com.adam.testutil.IntegrationTest在其classPath上,以便SureFire和FailSafe插件运行,否则它们会扔ClassNotFoundException

因此,类必须在模块中,所有模块都必须将其声明为依赖关系。我希望将其声明为父pom中的依赖性因此,所有模块都会自动继承它,但这将创建一个循环依赖性问题,以阻止MVN运行。

实际上,即使模块中没有单元或集成测试,模块仍然必须声明依赖项。

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

实际上,我并不特别想创建一个新的模块来提供IntegrationTest。如果Junit在图书馆中包括合适的org.junit.IntegrationTest类,那将是如此简单。

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

我可以使用的地方有一个相关或适当命名的接口,而不是必须拥有自己的界面?

在最坏的情况下,就junit, @Category,maven-surefire-plugin和maven-failsafe-plugin而言,我可以在JDK中使用一个接口,例如。java.lang.clable-尽管有人阅读代码会想知道发生了什么。

我曾希望junit会有一些东西,但是我找不到任何有用的东西。

我可以在父母pom中对第三方库的依赖,一切都很好。

我将接受任何建议从第三方库中找到合适界面的人的答案,该界面的名称不会第一次阅读代码的任何人立即提出问题。

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接口的目的仅是标记哪些测试由Surefire执行,哪些测试由FailSafe执行。

在这种情况下,您可以使用命名约定。FailSafe的默认值为文档中描述:

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

确定,默认值为:

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

如果 ..您的大多数模块需要.. 接口,您可以在单个模块中声明您的IntegrationTest(尽管我建议不只是一个接口但是,请尝试将与该接口相关的内容以及该模块相关的内容)。让我们用名称integration-test称其为工件。

我希望将其声明为父pom中的依赖性 模块会自动继承它,但这将创建一个圆形 依赖性问题停止运行MVN。

  • ,在使用<dependencyManagement>这样做可以更好地使用integration-test伪像版本的 pom.xml中的依赖性并不是必须的。在文档中阅读有关它的更多信息。

实际上,即使模块中没有单元或集成测试,也 该模块仍然必须声明依赖项。

  • 如果是这种情况,您只需要在此模块的pom.xml中声明 integration-test伪像的依赖。

我还必须制作包含的模块 com.adam.testutil.integrationTest构建顺序中的第一个模块, 否则,它将在任何新的 系统

  • 反应堆分类要照顾在项目中构建模块中构建模块的顺序,其中成功构建它们所依赖的模块后构建了依赖模块。您可以在这里了解更多信息。因此,您的integration-test将在同一项目中取决于它的任何模块之前构建。

实际上,我不特别想创建一个新的模块 提供集成测试。如果Junit拥有 包括一个合适的org.junit.integrationTest类。

那么,某处有一个方便的界面吗?我只能放一个 在我的父母pom中对它的依赖性,一切都会好起来的。

  • 除非您公开并证明IntegrationTest接口有用,我怀疑它是否可以包含在junit LIB中。在某个地方方便的接口,您的界面IntegrationTest试图做什么,这是最终的问题。
  • 此后,如果可行(接受)将其包括在任何测试范围库中,则可能非常方便地将Lib的依赖性导入您的父级pom.xml
  • 直到那时,我仍然建议您使用integration-test单独的模块方法。

相关内容

  • 没有找到相关文章

最新更新