我想在eclipse中有一个源文件夹,它被视为测试源,但在测试阶段被忽略。它将包含单元测试和其他只能手动执行的代码。
这是可能的,如果是,那么如何?
答案 0 :(得分:3)
Maven旨在强制您使用标准项目设置。虽然可能存在一些偏差,但有时最好以标准方式解决问题。
一些解决方案:
将项目拆分为多个模块。您可以将所有此类测试移动到新模块中。在Eclipse中,您只需导入所有模块。在Maven POM中,默认配置文件不包括新模块。 Eclipse可以记住您希望为项目激活哪些配置文件,因此您可以通过静态配置获得不同的行为。
使用JUnit.Assume。简而言之,假设在不使其失败的情况下中止测试。它有点像@Ignore
。因此,混合测试,但将此行添加到您只想手动运行的所有测试中:
Assume.that(Boolean.getBoolean("runManualTests"));
现在,您可以通过向VM参数添加-DrunManualTests=true
来运行这些测试。 Eclipse允许您导出启动配置,以便您可以创建一对并将它们放入项目中以轻松运行测试。
解决潜在问题,阻止您始终运行所有测试。他们太慢了?使用CI服务器。他们很脆弱?好吧,让它们更稳定。为此,我需要了解更多有关您具体原因的信息。
答案 1 :(得分:0)
Maven Surefire Plugin是在构建期间运行测试的插件。根据{{3}} ...
默认情况下,Surefire插件会自动包含具有以下通配符模式的所有测试类:
- "**/Test*.java" - includes all of its subdirectories and all java filenames that start with "Test".
- "**/*Test.java" - includes all of its subdirectories and all java filenames that end with "Test".
- "**/*TestCase.java" - includes all of its subdirectories and all java filenames that end with "TestCase".
因此,您可以轻松编写不遵循上述模式的测试类,并仍将它们放入src/test/java
目录中。在任何IDE中,这意味着他们可以像其他IDE一样访问(测试)构建路径,并且可以从该IDE轻松执行它们。但它们不是由Maven执行的。
答案 2 :(得分:0)
我认为你是从错误的角度看待它。如果我是你,我会创建一个<profile/>
并在maven-surefire-plugin
设置(配置文件中)中定义,当激活此配置文件时应执行*My*Test
。实际上,我会创建两个单独的配置文件 - 一个是<activeByDefault/>
(将排除My*Test
并且只有在未从命令行指定<property/>
时才会被激活;以及基于属性<activation/>
的另一个配置文件 - 例如,您将通过传入-Dmy.test.property
手动触发此配置文件。这样你就可以避免使用build-helper-maven-plugin
的所有黑魔法。