在测试每个模块之前,Maven是否有办法在设置时运行一段代码?每个模块的清理也是一个优势。
举一个例子,假设我有模块A和B,测试类AA,AB,BA,BB和BC,每个都包含几种测试方法。因此模块A将运行测试类AA和AB,第一个包含测试方法AA.1和AA.2以及第二个AB.1和AB.2。
鉴于此,我希望测试设置运行如下:
设置大部分内容很容易,但我认为没有办法执行第1步和第8步,我也愿意。
修改
是的,这是应该进行集成测试的事情,但它不是,我们正在谈论几十个模块,更不用说测试了。我需要主要为每个模块准备这些资源,以便模块测试可以并行运行。
答案 0 :(得分:1)
这不是一个很好的解决方案,但您可以随时将process-test-classes
构建阶段附加一个任意插件和目标,该阶段默认在test
之前运行。见http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference。显然,这段代码不会与测试代码在同一个JVM中运行,但是如果你想要准备一些外部资源,它可能是合适的。
如果您正在准备外部资源,那么您可能正在执行集成测试,因此pre-integration-test
阶段就是您要附加的内容。
答案 1 :(得分:1)
这听起来像是集成测试。这意味着您可以使用pre-integration-test
,integration-test
和post-integration-test
phase来定义进行相应测试所需的设置等。您可以将任何插件绑定到pre-integration-test
阶段以进行某种设置(例如通过sql-maven-plugin等进行数据库设置)。
此外,您可以使用TestNG支持群组等,此外它还支持以下内容:
@BeforeSuite
@BeforeTest
@BeforeGroups
@BeforeClass
@BeforeMethod
答案 2 :(得分:0)
您可以在JUnit中通过在here概述的行上定义嵌套测试套件,在模块的子套件上使用@Before
和@After
方法来实现。
然后你configure maven只运行新的测试套件,而不是单独的测试。
更加雄心勃勃,您可以根据命名惯例执行此操作,而无需通过以下方式指定所涉及的所有单个测试: