在junit测试用例的终端上构建失败

时间:2013-09-13 06:10:09

标签: maven junit terminal

我是maven和junit的新手所以请耐心等待: - )

我创建了一个示例maven项目,其中包含src / test / java中的一个简单测试作为folows

public class AssertUnitTest {
    @Test
    public void massageTest(){  
        Assert.assertEquals("abc", "abd");
    }
}

当我从eclipse运行测试时,测试失败说预期是abc但是找到了abd。 当我运行相同的使用终端时,它说的是BUILD FAILURE

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.assertpackage.AssertUnitTest
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.055 sec <<< FAILURE!

Results :

Failed tests: 
  messageTest(com.assertpackage.AssertUnitTest): expected:<ab[c]> but was:<ab[d]>

Tests run: 1, Failures: 1, Errors: 0, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.712s
[INFO] Finished at: Fri Sep 13 11:36:12 GMT+05:30 2013
[INFO] Final Memory: 9M/81M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-   plugin:2.7.2:test (default-test) on project AssertProject: There are test failures.
[ERROR] 
[ERROR] Please refer to /Users/support/Documents/Omniture_Selenium_Project/AssertProject  /target/surefire-reports for the individual test results.
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

这是什么错误以及如何解决它并使BUILD SUCCESS

6 个答案:

答案 0 :(得分:2)

Maven使用test插件的surefire目标默认运行所有单元测试,即使一个测试失败也会失败。控制台输出几乎是这样说的:

Failed to execute goal org.apache.maven.plugins:maven-surefire-   plugin:2.7.2:test (default-test) on project AssertProject: There are test failures.

如果目标无法执行,则结果是构建失败。

因此,只需让您的测试不失败或skip tests for now(不推荐)。

答案 1 :(得分:1)

标准的maven-build将运行src / test / java中的所有测试,如果其中一个失败(如你的example-test),则构建将失败。

因此,为了使构建成功,您必须通过所有测试。

答案 2 :(得分:1)

Surefire插件有一个testFailureIgnore参数,启用后,在测试失败时不会导致构建失败。

您可以在命令行中添加它:

mvn install -Dmaven.test.failure.ignore=true

credit to @PascalThivent

或者你可以把它直接放到你的pom.xml中:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>${surefire.plugin.version}</version>
    <configuration>
        <!-- Build, even if tests fail -->
        <testFailureIgnore>true</testFailureIgnore>
    </configuration>
</plugin>

请注意,这并不会像其他人建议的那样阻止测试运行。测试按正常运行,所有报告仍然生成。使用此设置,不再需要所有测试都通过项目构建。因此,我倾向于在我的所有poms中包含这个Surefire配置。

答案 3 :(得分:1)

在构建过程中,某个单元测试失败。您可以通过添加ff参数-Dmaven.test.skip

来跳过测试

答案 4 :(得分:0)

Maven构建生命周期包含TEST阶段,该阶段运行属于项目的所有jUnit测试。如果测试失败,构建生命周期也会失败。这是理想的行为,因为您不希望发布未通过测试的应用程序。

您可以通过编写将通过TEST阶段(预期行为)的测试来修复它,或者您可以使用maven参数-DskipTests构建应用程序,这将跳过生命周期的TEST阶段。

*编辑*

我还建议您查看关于maven构建生命周期的Docs

答案 5 :(得分:0)

Maven提出了三种不同的方法来管理反应堆构建中的失败:fail-fastfail-at-endfail-never

默认方式是fail fast,它会在第一个失败的项目之后停止反应堆构建。要在考试失败的情况下BUILD SUCCESSFUL,您可以尝试fail-at-end政策(使用--fail-at-end(或仅-fae)参数。

通过:Mastering The Maven Command Line – Managing failures