一种可能性是它可以在课堂上扫描@Test。这是如何实现的?如果不是如何?。
答案 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
includesFile
,test
等其他人,请参阅文档了解详情所有这些类都将用于您的测试。
Runner基本上是运行测试的类。来自JUnit文档:
Runner运行测试并通知RunNotifier重要事件 因为它这样做。使用RunWith时,您需要子类化Runner 调用自定义运行器。在创建自定义跑步者时,除了 在这里实现抽象方法你还必须提供一个 构造函数,它将包含测试的类作为参数。
使用TestNG观察到类似的行为。基本上,Runner将管理您的测试类如何实例化和执行。该行为高度依赖于实现,我建议阅读所述Runners的源代码和有关它们的JUnit / TestNN文档以了解更多信息。
答案 1 :(得分:0)
@Test
是annotation
,允许junit
和maven
等框架确定应运行哪些测试。
它们还允许指定其他内容(例如,expected
例外)。
http://junit.org/junit4/javadoc/4.12/org/junit/Test.html
测试运行器更复杂,允许您更好地控制测试的执行方式,例如,如果您使用的是框架。但对于“普通香草”测试,你不应该需要它们。
https://www.mscharhag.com/java/understanding-junits-runner-architecture