Maven如何知道哪个是测试类,哪个不是

时间:2017-11-14 10:35:38

标签: java maven junit4 junit-runner

  1. 我曾经使用junits但从未考虑过maven如何知道类定义的src / test / java是一个测试类而不是普通的类。
  2. 一种可能性是它可以在课堂上扫描@Test。这是如何实现的?如果不是如何?。

    1. 跑步者究竟是什么,他们的角色是什么。 我可以在没有跑步者的情况下获得测试用例吗?

2 个答案:

答案 0 :(得分:1)

Maven将使用多个因素和参数来确定哪些类是Test类。事实上,它本身并不是Maven,而是一个或多个插件。

大多数情况下,您将使用Surefire Plugin binds by default to the test phase(您也可以使用Failsafe Plugin,其行为非常相似但针对IT测试)

Surefire插件配置将定义哪些类是您的测试类:

  • testSourceDirectory:包含测试类的文件夹,默认情况下为src/test/java
  • includes:定义要包含的类的名称模式,有多种默认模式,例如**/*Test.java
  • ......以及includesFiletest等其他人,请参阅文档了解详情

所有这些类都将用于您的测试。

Runner基本上是运行测试的类。来自JUnit文档:

  

Runner运行测试并通知RunNotifier重要事件   因为它这样做。使用RunWith时,您需要子类化Runner   调用自定义运行器。在创建自定义跑步者时,除了   在这里实现抽象方法你还必须提供一个   构造函数,它将包含测试的类作为参数。

使用TestNG观察到类似的行为。基本上,Runner将管理您的测试类如何实例化和执行。该行为高度依赖于实现,我建议阅读所述Runners的源代码和有关它们的JUnit / TestNN文档以了解更多信息。

答案 1 :(得分:0)

@Testannotation,允许junitmaven等框架确定应运行哪些测试。

它们还允许指定其他内容(例如,expected例外)。

http://junit.org/junit4/javadoc/4.12/org/junit/Test.html

测试运行器更复杂,允许您更好地控制测试的执行方式,例如,如果您使用的是框架。但对于“普通香草”测试,你不应该需要它们。

https://www.mscharhag.com/java/understanding-junits-runner-architecture