当前位置: 首页 > 知识库问答 >
问题:

当JUnit中的测试失败时,“org.codehaus.mojo:execMaven插件:1.6.0:exec”是否应该无法执行目标?

党俊健
2023-03-14

当其中一个测试在我的maven项目中失败时,我收到以下错误:未能在项目java上执行目标org.codehaus.mojo:exec-maven-plugin:1.6.0:exec(默认值):命令执行失败。:进程退出,错误:1(退出值:1)-

我正在尝试使用Hiptest和TravisCI自动化我的测试。我从Hiptest分叉了hps-cucumber-java项目,并遵循了指南。当所有测试通过时,它将按预期工作。但是当其中一个失败时(使用assertTrue(false)),它会给我以下错误:

Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.6.0:exec (default) on project html" target="_blank">java: Command execution failed.: Process exited with an error: 1 (Exit value: 1) -> [Help 1]

当测试失败时,这种情况会发生吗?cuke结果。json文件生成时没有任何问题,但该错误会弄乱TravisCI并阻止结果上传到Hiptest。

这是我的pom文件:

<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.coffeemachine</groupId>
  <artifactId>java</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>java</name>
  <url>http://maven.apache.org</url>
  <properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
 <build>
  <plugins>
    <plugin>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.1</version>
    </plugin>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.16</version>
        <configuration>
            <skipTests>true</skipTests>
        </configuration>
    </plugin>
    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <version>1.6.0</version>
        <executions>
            <execution>
                <phase>test</phase>
                <goals>
                    <goal>exec</goal>
                </goals>
                <configuration>
                    <classpathScope>test</classpathScope>
                    <executable>java</executable>
                    <arguments>
                        <argument>-classpath</argument>
                        <classpath />
                        <argument>cucumber.api.cli.Main</argument>
                        <argument>--plugin</argument>
                        <argument>json:${project.build.directory}/cuke-results.json</argument>
                        <argument>--glue</argument>
                        <argument>com.coffeemachine</argument>
                        <argument>--strict</argument>
                        <argument>${basedir}/src/test/java/com/coffeemachine</argument>
                    </arguments>
                </configuration>
            </execution>
        </executions>
    </plugin>
  </plugins>
  </build>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>info.cukes</groupId>
      <artifactId>cucumber-java</artifactId>
      <version>1.2.3</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>info.cukes</groupId>
      <artifactId>cucumber-junit</artifactId>
      <version>1.2.3</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

共有1个答案

阎知
2023-03-14

我是HipTest团队的Houda!

我认为你的Actionwords中有一个错误的实现。java文件,或者更确切地说,测试所基于的文件之一。

这里有一个例子可以帮助你,你可以在这里找到一个基于Cucumber-Java的GitHub库和我们的样例项目“咖啡机”。

在测试所基于的这个主文件中,您有一个在“CoffeeMachine”类中声明为false的“coffeeServe”变量。

同时,在这个Actionwords.java文件中将"CoffeeMachine"类声明为一个新对象,并将"coffeeServe"变量作为一个值积分到"assertTrue()"方法中。

你能尝试修改你的测试结构以获得一个相似的实现并再次运行你的测试吗?输出中是否有同样的错误?

 类似资料: