标签: maven-failsafe-plugin

Maven failsafe插件不会运行使用JUnit类别注释的测试类

我有这样的界面:

public interface IntegrationTest {
}
Run Code Online (Sandbox Code Playgroud)

我像这样配置故障安全插件:

 <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    <version>2.14</version>
    <configuration>
        <groups>acme.test.IntegrationTest</groups>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>integration-test</goal>
            </goals>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

如果我然后创建这样的集成测试

@Category(IntegrationTest.class)
public class ExampleClassIntegrationTest {

@Test
public void slow_and_painful_test() {
Run Code Online (Sandbox Code Playgroud)

此测试不会运行.

但是,如果我根据测试包含和排除对该课程命名

**/IT*.java
**/*IT.java
**/*ITCase.java
Run Code Online (Sandbox Code Playgroud)

像这样:

@Category(IntegrationTest.class)
public class ExampleClassIT {

@Test
public void slow_and_painful_test() {
Run Code Online (Sandbox Code Playgroud)

测试运行正常.为什么我必须命名测试并在使用groups-tag时有注释?我错过了什么吗?使用JUnit 的文档声明您可以在类级别使用Category注释.

junit maven maven-failsafe-plugin

4
推荐指数
1
解决办法
2964
查看次数

Maven failsafe插件不会运行并行测试

我有一个Maven POM文件,当我提供并行执行选项时,我没有在日志中看到任何并行执行的迹象.XML调试让我疯狂.有什么想法吗?

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
      <groupId>com.xxx.xxxx.testing.ranger</groupId>
      <artifactId>ranger-parent</artifactId>
      <relativePath>../parent/pom.xml</relativePath>
      <version>1.0.0</version>
   </parent>
   <artifactId>ranger-api-tests</artifactId>
   <name>Ranger API Tests</name>
   <description>Ranger API integration tests. Depends on the Ranger test framework project.</description>
   <properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <test.groups />
      <surefire.and.failsafe.report.dir>C:/Users/xxx/Documents/Projects/LearnCubeAPIIT/tests/target</surefire.and.failsafe.report.dir>
   </properties>
   <dependencies>
      <!-- Granite Testing framework -->
      <dependency>
         <groupId>com.xxx.xxxx.testing.ranger</groupId>
         <artifactId>ranger-api-it-framework</artifactId>
         <version>1.0.0</version>
      </dependency>
      <dependency>
         <groupId>commons-lang</groupId>
         <artifactId>commons-lang</artifactId>
         <version>2.4</version>
      </dependency>
      <dependency>
         <groupId>commons-httpclient</groupId>
         <artifactId>commons-httpclient</artifactId>
         <version>3.1</version>
      </dependency>
      <dependency>
         <groupId>org.apache.maven.surefire</groupId>
         <artifactId>surefire-junit47</artifactId>
         <version>2.16</version>
      </dependency>
      <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <version>4.11</version>
      </dependency>
   </dependencies>
   <build>
      <plugins>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-failsafe-plugin</artifactId>
            <version>2.16</version>
            <configuration>
               <parallel>classes</parallel>
               <threadCount>4</threadCount>
               <reportsDirectory>${project.build.directory}/surefire-reports</reportsDirectory> …
Run Code Online (Sandbox Code Playgroud)

java testing maven parallel-testing maven-failsafe-plugin

4
推荐指数
1
解决办法
5666
查看次数

surefire 和failsafe 插件可以故意随机化测试类的执行顺序吗?

看起来surefire 和failsafe 插件按顺序执行测试类,而在类中定义的测试以不确定的顺序执行。

为了发现依赖于顺序的测试(我们认为是糟糕的测试),我们希望强制每次运行的顺序不同。理想情况下,我们有一个机制来禁用随机化或一个重复顺序的种子编号(必须像旧的 Palm OS 模拟器有一个种子编号来驱动一系列随机测试)。

如果您知道这样做的方法,请告诉我?如果没有,我想我可以将其放入本地分支然后提交。

谢谢

彼得

maven maven-surefire-plugin maven-failsafe-plugin

4
推荐指数
1
解决办法
1760
查看次数

迁移到 Spring Boot 2.4.0 后不再使用故障安全插件执行 IT

我有一些使用故障安全插件运行的集成测试。这一直有效,Spring Boot 2.3.5.RELEASE但在迁移到2.4.0IT后不再执行。

1)有人有同样的问题吗?

2) 如何调试故障安全以找出未执行测试的原因?

java maven-failsafe-plugin spring-boot

4
推荐指数
1
解决办法
555
查看次数

Spring boot 故障安全集成测试 - 升级到 2.4.2 后无法找到合并的注释

升级到 Spring Boot 2.4.2 (Spring 5.3.3) 后,我们的 Spring Context 测试失败了:

lut 15, 2021 4:37:49 PM org.junit.jupiter.engine.execution.JupiterEngineExecutionContext close
SEVERE: Caught exception while closing extension context: org.junit.jupiter.engine.descriptor.JupiterEngineExtensionContext@27be17c8
java.lang.IllegalStateException: Failed to find merged annotation for @org.springframework.test.context.BootstrapWith(org.springframework.boot.test.context.SpringBootTestContextBootstrapper.class)
    at org.springframework.util.Assert.state(Assert.java:97)
    at org.springframework.test.context.TestContextAnnotationUtils$AnnotationDescriptor.<init>(TestContextAnnotationUtils.java:513)
    at org.springframework.test.context.TestContextAnnotationUtils.findAnnotationDescriptor(TestContextAnnotationUtils.java:252)
    at org.springframework.test.context.TestContextAnnotationUtils.findAnnotationDescriptor(TestContextAnnotationUtils.java:214)
    at org.springframework.test.context.BootstrapUtils.resolveExplicitTestContextBootstrapper(BootstrapUtils.java:157)
    at org.springframework.test.context.BootstrapUtils.resolveTestContextBootstrapper(BootstrapUtils.java:130)
    at org.springframework.test.context.TestContextManager.<init>(TestContextManager.java:122)
    at org.junit.jupiter.engine.execution.ExtensionValuesStore.lambda$getOrComputeIfAbsent$4(ExtensionValuesStore.java:86)
    at org.junit.jupiter.engine.execution.ExtensionValuesStore$MemoizingSupplier.get(ExtensionValuesStore.java:205)
    at org.junit.jupiter.engine.execution.ExtensionValuesStore$StoredValue.evaluate(ExtensionValuesStore.java:182)
    at org.junit.jupiter.engine.execution.ExtensionValuesStore$StoredValue.access$100(ExtensionValuesStore.java:171)
    at org.junit.jupiter.engine.execution.ExtensionValuesStore.lambda$closeAllStoredCloseableValues$1(ExtensionValuesStore.java:65)
    at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:176)
    at java.base/java.util.concurrent.ConcurrentHashMap$ValueSpliterator.forEachRemaining(ConcurrentHashMap.java:3612)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
    at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
    at org.junit.jupiter.engine.execution.ExtensionValuesStore.closeAllStoredCloseableValues(ExtensionValuesStore.java:68)
    at org.junit.jupiter.engine.descriptor.AbstractExtensionContext.close(AbstractExtensionContext.java:74)
    at org.junit.jupiter.engine.execution.JupiterEngineExecutionContext.close(JupiterEngineExecutionContext.java:53)
    at …
Run Code Online (Sandbox Code Playgroud)

java junit spring maven-failsafe-plugin spring-boot

4
推荐指数
1
解决办法
3680
查看次数

maven-failsafe-plugin不会在验证时运行,也不会在故障安全上找到xml:verify

Maven故障安全插件不会在我的项目上运行.如果我运行mvn验证只有surefire运行.如果我键入mvn failsafe:验证它失败并出现以下错误:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-failsafe-plugin:2.11:verify (default-cli) on project experiment-server: /home/user/workspace/MyProject-Main/MyProject-IntegrationTest/target/failsafe-summary.xml (The system cannot find the path specified) -> [Help 1]
Run Code Online (Sandbox Code Playgroud)

所以我基本上有同样的问题:failafe插件不会在一个项目上运行但会在另一个项目上运行 - 为什么? 不同的是,我的pom已经看起来像这样:

<plugin>
    <artifactId>maven-failsafe-plugin</artifactId>
    <version>2.14.1</version>
    <executions>
        <execution>
            <id>failsafe-integration-tests</id>
            <phase>integration-test</phase>
            <goals>
                <goal>integration-test</goal>
            </goals>
        </execution>
        <execution>
            <id>failsafe-verify</id>
            <phase>verify</phase>
            <goals>
                <goal>verify</goal>
            </goals>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

这就是这个家伙问题的解决方案.除了这个网站上的解决方案对我不起作用.有人能说出我搞砸了的地方吗?

我还有一个问题,我想在预集成阶段使用exec-maven-plugin启动服务器.但是当我尝试mvn-verify时,它是最后执行的东西.

integration-testing maven-failsafe-plugin

3
推荐指数
1
解决办法
3324
查看次数

如何在 Netbeans 测试结果中查看集成测试?

我的开发环境是Netbeans 7.4和Maven 3.0.5(与Netbeans捆绑在一起)。我正在使用 JUnit 4.11 构建单元(以 Test 结尾的类名)和集成测试(以 IT 结尾的类名)。我正在运行单元测试并排除使用“-DskipITs”Maven 选项的集成测试。我有一个自定义操作,仅运行带有故障安全插件的集成测试。两者都执行成功。但是,在运行单元测试时,我只能在“测试结果”窗口中看到结果。如何让集成测试显示在“测试结果”窗口中?通过集成测试,我只能看到控制台中的输出。

java junit netbeans-7 maven-failsafe-plugin

3
推荐指数
1
解决办法
2560
查看次数

如何跳过surefire测试,但运行故障安全测试?

在我的项目中,我确实可以进行故障安全测试.

如果我运行,mvn clean install -DskipTests则跳过两种测试.

如果我尝试使用-Dit.test = TestName运行单个故障安全测试,那么首先运行所有的surefire测试然后我的测试..但是因为可靠性测试需要很长时间,这是不好的.

在某些情况下,我想跳过surefire测试,但运行故障安全IT测试.

unit-testing maven maven-surefire-plugin maven-failsafe-plugin

3
推荐指数
1
解决办法
2366
查看次数

Maven故障安全类路径

我已经开始了一个新项目:PostfixSQLConfig。这是一个简单的Spring Boot应用程序,必须为4个简单的数据库表提供CRUD访问。我为第一个表编写了存储库,并为该存储库编写了一些基本的集成测试。由于此特定表不应提供更新功能,因此我将更新功能实现为:

@Override
public void update(@NonNull Domain domain) throws NotUpdatableException {
    throw new NotUpdatableException("Domain entities are read-only");
}
Run Code Online (Sandbox Code Playgroud)

NotUpdatableException我的自定义异常类在哪里。

此代码的IT如下所示:

@Test(expected = NotUpdatableException.class)
public void testUpdate() throws NotUpdatableException {
    val domain = Domain.of("test");

    domainRepository.update(domain);
}
Run Code Online (Sandbox Code Playgroud)

如果从我的IDE(IntelliJ 2018.2 EAP)运行此测试,它将通过,但运行mvn verify失败并显示以下信息:

java.lang.NoClassDefFoundError: com/github/forinil/psc/exception/NotUpdatableException
  at java.lang.Class.getDeclaredMethods0(Native Method)
  at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
  at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
  at java.lang.Class.getMethod0(Class.java:3018)
  at java.lang.Class.getMethod(Class.java:1784)
  at org.apache.maven.surefire.util.ReflectionUtils.tryGetMethod(ReflectionUtils.java:60)
  at org.apache.maven.surefire.common.junit3.JUnit3TestChecker.isSuiteOnly(JUnit3TestChecker.java:65)
  at org.apache.maven.surefire.common.junit3.JUnit3TestChecker.isValidJUnit3Test(JUnit3TestChecker.java:60)
  at org.apache.maven.surefire.common.junit3.JUnit3TestChecker.accept(JUnit3TestChecker.java:55)
  at org.apache.maven.surefire.common.junit4.JUnit4TestChecker.accept(JUnit4TestChecker.java:53)
  at org.apache.maven.surefire.util.DefaultScanResult.applyFilter(DefaultScanResult.java:102)
  at org.apache.maven.surefire.junit4.JUnit4Provider.scanClassPath(JUnit4Provider.java:309)
  at org.apache.maven.surefire.junit4.JUnit4Provider.setTestsToRun(JUnit4Provider.java:189)
  at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:132)
  at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:379)
  at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:340)
  at …
Run Code Online (Sandbox Code Playgroud)

java junit4 maven maven-failsafe-plugin spring-boot

3
推荐指数
1
解决办法
475
查看次数

故障安全错误:使用阴影插件时“清单主要属性的签名文件摘要无效”

在 maven 中使用 shade-plugin 并稍后尝试使用 failsafe-plugin 运行集成测试时,当故障安全即将运行时,我收到以下错误,导致我的集成测试被跳过:

[ERROR] Invalid signature file digest for Manifest main attributes
Run Code Online (Sandbox Code Playgroud)

此错误似乎是由依赖项中的签名 jar 引起的。这个答案建议使用依赖插件过滤掉签名,但它似乎对我不起作用。Shade-plugin 只是解压了所有的依赖,并没有解决问题。我怎样才能使这项工作?

jar maven maven-failsafe-plugin maven-shade-plugin

3
推荐指数
1
解决办法
503
查看次数