当前位置: 首页 > 面试题库 >

Junit4和TestNG与Maven在一个项目中

麻宾白
2023-03-14
问题内容

要一起运行它们,几乎没有可用的选项,但是我选择为Junit和TestNG使用不同的配置文件。但是现在的问题是排除和包含测试用例。

由于如果我们在Maven的主项目中添加testNG依赖项,它将跳过所有Junit,因此我决定将其放在单独的配置文件中。所以我使用pom.xml中的以下条目从默认(主要)配置文件中排除了TestNG测试:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.0.2</version>
        <configuration>
        <source>1.5</source>
        <target>1.5</target>
        <testExcludes>
            <testExclude>**/tests/**.*</testExclude>
            <testExclude>**/tests/utils/**.*</testExclude>
        </testExcludes>
    </configuration>
</plugin>

与surefire插件相同。因此,它可以与主配置文件配合使用,并且仅执行Junit4测试。但是当我使用testNG配置文件时,它甚至不会编译它们也不会执行testNG测试。我正在使用以下配置文件执行它们。

<profile>
    <id>testNG</id>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.5</source>
                    <target>1.5</target>
                    <testIncludes>
                        <testInclude>**/tests/**.java</testInclude>
                        <testInclude>**/tests/utils/**.*</testInclude>
                    </testIncludes>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <skip>false</skip>
                    <includes>
                        <include>**/**.class</include>
                        <include>**/tests/utils/**.class</include>
                    </includes>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>5.8</version>
            <scope>test</scope>
            <classifier>jdk15</classifier>
        </dependency>
    </dependencies>
</profile>

有人知道为什么不包括它们并重新编译吗?


问题答案:

编译器插件的配置不包含TestNG类型。配置文件中的配置与默认配置合并,因此您有效的编译器配置为:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <configuration>
    <source>1.5</source>
    <target>1.5</target>
    <testIncludes>
      <testInclude>**/tests/**.java</testInclude>
      <testInclude>**/tests/utils/**.*</testInclude>
    </testIncludes>
    <testExcludes>
      <testExclude>**/tests/**.*</testExclude>
      <testExclude>**/tests/utils/**.*</testExclude>
    </testExcludes>
  </configuration>
</plugin>

这意味着您的TestNG类型不会被编译,因此不会运行。

如果在testNG配置文件中指定 部分,它将覆盖默认的排除项,并且将编译并运行您的TestNG类型。我不记得它是否可以与空的excludes标记(即 )一起使用,您可能必须指定类似的内容以确保默认配置被覆盖。

    <testExcludes>
      <testExclude>dummy</testExclude>
    </testExcludes>


 类似资料:
  • 问题内容: 今天,我一直在尝试寻找一个合适的解决方案来建立一个既包含Java代码又包含Scala代码(它们之间具有双向依赖性)的maven项目。 我发现的解决方案通常包括在该阶段调用scala-maven-plugin或maven-scala- plugin,以便它在默认的maven编译器插件之前运行(示例:http : //www.hascode.com/2012/03 /片段混合- 斯卡拉的J

  • 我尝试运行,结果是: ================================================== 默认测试 按照这些步骤,我在Maven的中添加了、和依赖项。 在执行testsuite时,将创建以下文件夹(用红框标记)。 正如预期的那样,ReportNG应该创建了一个输出文件夹,在我的场景中没有注意到这一点。其次,结果不同。 操作系统:Windows 7 guice.ja

  • 问题内容: 我必须在同一Maven项目中使用注释处理(apt)和AspectJ。 两者都适合自己,但是我需要基于apt创建的代码来创建方面。因此,我需要进行二进制编织(原始源文件由apt扩展)。如何在Maven项目中启用二进制编织? 我知道唯一的标准选项是使用weaveDependencies参数提供依赖关系,但这太糟糕了。还有其他办法吗? 好的,我可以使用Maven Antrun插件嵌入Aspe

  • 问题内容: 如何在Eclipse中创建一个简单的Maven项目。每次创建项目时都会出现错误。 错误说明资源路径位置类型CoreException:无法计算构建计划:插件org.apache.maven.plugins:maven- compiler-plugin:2.3.2或其依赖项之一无法解析:无法读取组织的工件描述符。 apache.maven.plugins:maven- compiler-

  • 我需要在docker中运行selenium测试用例。我引用的多篇文章都是一样的。我可以在docker中运行测试用例,它只设置了selenium。但我的项目是maven build,我想在docker中运行。 项目设置: 使用Java的Selenium webdriver 我从几篇有用的文章中了解到: 需要创建测试用例jar 但是我无法使这个设置工作。

  • 我是Maven和Jenkins的新手,所以请耐心等待我... 我有一个Maven项目,当我从项目文件夹中运行mvn install时,它可以正确构建,但是当我尝试通过Jenkins构建时,根本无法解决任何依赖项。我是否在我的 Maven 或 Jenkins 设置中遗漏了某些内容/搞砸了某些内容? 项目POM和. m2/settings.xml如下... pom.xml .m2/设置.xml