Java 调整maven测试的断言

Java 调整maven测试的断言,java,maven,junit,Java,Maven,Junit,我正在从事一个Java/Maven项目。我使用mvn测试来运行我的测试套件。但是,在这种情况下,所有断言都是启用的。不幸的是,这会将某些操作的时间从logn增加到n^2,这相当不方便。更重要的是,该操作是在依赖项packageA中定义的,而我在packageB上工作。使用纯Java我可以添加-ea:packageB。。。只启用我实际需要的断言。是否可以使用pom.xml的内容或mvn的命令行参数来实现此行为?我知道我可以禁用所有断言,但我更愿意将断言保留在我实际处理的包中…您可以使用surefi

我正在从事一个Java/Maven项目。我使用mvn测试来运行我的测试套件。但是,在这种情况下,所有断言都是启用的。不幸的是,这会将某些操作的时间从logn增加到n^2,这相当不方便。更重要的是,该操作是在依赖项packageA中定义的,而我在packageB上工作。使用纯Java我可以添加-ea:packageB。。。只启用我实际需要的断言。是否可以使用pom.xml的内容或mvn的命令行参数来实现此行为?我知道我可以禁用所有断言,但我更愿意将断言保留在我实际处理的包中…

您可以使用surefire插件实现这一点。但首先需要为不同的包指定概要文件

使用surefire插件,您可以使用通配符或正则表达式排除或包含包

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.18.1</version>
    <configuration>
      <includes>
        <include>%regex[.*[Cat|Dog].*Test.*]</include>
      </includes>
    </configuration>
  </plugin>

您可以找到更详细的信息。

我使用以下属性:

<maven.test.skip>false</maven.test.skip>
<maven.test.failure.ignore>false</maven.test.failure.ignore>
然后您可以保持断言不变,但将这些属性更改为Assert.fail失败,或者根本不进行测试

或者类似地,使用CMD添加一个额外参数,如添加:

-Dmaven.test.skip=true


嗯,我不想包括/排除测试用例,我想启用/禁用断言语句…@hfhc2有什么区别?为什么您仍然希望执行测试,但不执行断言?你希望从中得到什么?相反,只排除您不想运行的包。好吧,我仍然需要assertTrue/assertEquals。。。要测试的语句…如果可以重构代码,可以尝试在基类中使用基本断言,在某些情况下在调度对象中省略所有断言。通过maven概要文件,您可以决定是需要所有断言,还是只需要基本断言。一般来说,您应该将单元测试划分为
<maven.test.skip>false</maven.test.skip>
<maven.test.failure.ignore>false</maven.test.failure.ignore>