【问题标题】:Using Maven for JUnit testing使用 Maven 进行 JUnit 测试
【发布时间】:2014-05-28 01:41:52
【问题描述】:

我开始在 Eclipse 中学习 JUnit 测试。用于显示测试结果的插件提供了一个干净的测试视图,您可以单击将您带到正在测试的代码区域的项目。

当我开始使用 Maven 时,我注意到您也可以让 Maven 执行您的 JUnit 测试。但是,因为 Maven 是一个命令行进程并且结果被写入控制台,JUnit 结果也被发送到那里。它看起来像废话。您必须通过所有控制台文本解析您的方式才能找到测试结果。一切都只是简单的旧文本。

这提出了一个问题,即 Maven 使用 JUnit(或任何其他测试框架)进行测试的目的是什么?我一定错过了重点。当 Eclipse 插件提供了一种查看、执行和评估测试的优雅方式时,为什么会有人想要阅读大型文本转储?

【问题讨论】:

    标签: eclipse maven junit


    【解决方案1】:

    一般而言,您在命令行上构建是因为您的 IDE 中的所有内容都正常运行。命令行构建是最后的健全性检查,可能是您发布软件的方式(例如mvn release:perform 等)。

    虽然有一些插件可以使 Maven 测试输出稍微好一些,但期望测试会通过。如果没有,请启动 Eclipse 并再次运行测试。

    【讨论】:

    • 这意味着我想解析所有控制台文本以确定测试是否通过?
    • @AndroidDev Maven 会告诉您构建是否因测试而失败。那时,我什至不会费心查看输出来查看哪些测试失败了。我会切换到 Eclipse 并在那里再次运行测试以查看发生了什么。
    • 那么你确实回答了我的问题。除了单一的通过/失败指示之外,Maven 对测试没有任何价值。真正的测试都是在 Eclipse 中完成的。
    • @AndroidDev 如果您是从事项目的单个开发人员,这可能是一个有效的观点。在较大的项目中,Maven 的输出通常会反馈到项目报告等中,这很有帮助。
    【解决方案2】:

    Maven 使用 JUnit 进行测试的目的是什么?
    单元测试是应用程序开发的一部分(通常在编码/开发组件时进行),Apache Maven 是项目管理工具,(正如邓肯所说)它帮助我们发布软件。 包括 - 依赖管理、模块管理、插件管理和测试报告配置。

    Maven Objectives:

    • 简化构建过程
    • 提供统一的构建系统
    • 提供优质项目信息
    • 为最佳实践开发提供指南
    • 允许透明迁移到新功能

    有关 Maven 的更多详细信息,请查看以下主题:
    Why do so few people use Maven?
    Why maven ? What are the benefits?

    当 Eclipse 插件提供了一种查看、执行和评估测试的优雅方式时,为什么会有人想要阅读大型文本转储?
    出于软件发布的目的,我们需要维护应用程序的统计信息(涵盖了多少场景,通过了测试用例等)。 Maven支持不同的插件来格式化结果,Maven Surefire Plugin,maven-site-plugin..etc插件帮助我们生成不同格式的报告。

    更多详情请参考以下主题:
    JUnit3 and Junit4 XML Reports with Maven
    Is there a decent HTML Junit report plugin for Maven?

    【讨论】:

    • 我认为这个答案可能会受益于一些编辑 - 有很多关于 Maven 的额外信息似乎与问题无关。只有你的最后两段似乎相关。
    【解决方案3】:

    Maven 是一个构建工具。其目标和目的是产生可重复和可证明的结果。当我们谈论构建/持续集成服务器时,这一点尤其重要。

    所以正常的工作流程是/应该是:开发人员通常使用他们的 IDE (eclipse) 进行开发,他们在 IDE 中运行测试,因为它以开发人员为中心并且更舒适。

    构建服务器,缺少图形环境,运行构建工具,即 maven。

    有时,maven 和 eclipse 之间的结果可能不同,在这种情况下,开发人员可能需要在他们的机器上运行 maven。

    直接使用 maven 的另一个原因可能是集成测试,它专门使用 maven 生命周期集成来启动和停止服务器。

    一些具体点:Maven 非常轻松地在摘要中向您展示了哪些测试失败了:

    00:46:21.988 Results :
    00:46:21.988 
    00:46:21.988 Failed tests: 
    00:46:21.988   MyTest.testPersistErrorStateNewTransaction:48 Test for 'testPersistErrorStateNewTransaction()' not yet implemented!
    00:46:21.988 
    00:46:21.988 Tests in error: 
    00:46:21.988   MyOtherTest.testMethod
    00:46:21.989 
    00:46:21.989 Tests run: 1162, Failures: 1, Errors: 1, Skipped: 491
    00:46:21.989 
    00:46:22.003 [ERROR] There are test failures.
    00:46:22.004 
    

    此外,当从 maven 运行时,您仍然可以通过双击 surefire-reports 目录中的测试结果 (.xml) 在 eclipse junit 视图中打开 surefire 测试的结果。

    【讨论】:

    • 我不知道你可以在 JUnit Eclipse 插件中打开 .xml 文件。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2022-01-14
    • 2018-11-24
    • 2012-03-15
    • 2014-08-18
    • 2013-08-23
    • 2012-12-04
    • 1970-01-01
    • 2017-05-12
    相关资源
    最近更新 更多