我想在src / test / java下运行2个类:scen1.class
和scen2.class
。这两个都有@Test
注释方法。
我有另一个名为JunitDefinitions.class
的课程,该课程只有@Before
,@After
,@BeforeClass
和@AfterClass
方法(没有@Test)。
这也是在src / test / java下,但在不同的包下。
假设我有默认的pom.xml
,为了能够执行所有这3个类,我应该添加什么?
答案 0 :(得分:1)
<includes>
配置包含JunitFW.java,Scen1.java和Scen2.java,如documentation中所述。 默认情况下,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".
"**/*Tests.java" - includes all of its subdirectories and all Java filenames that end with "Tests".
"**/*TestCase.java" - includes all of its subdirectories and all Java filenames that end with "TestCase".
答案 1 :(得分:1)
除了像@viniciusartur所建议的那样将类重命名为Scen1Test.java和Scen2Test.java之外,它将帮助Maven识别测试类以使用surefire-plugin执行它们。
此处需要注意的另一点是,@Before
,@BeforeClass
,@After
等未经@Test
method独立执行的原因仅在于
Test annotation告诉JUnit公共void方法到哪个 它附加可以作为测试用例运行。要运行该方法,请使用JUnit 首先构造一个新的类,然后调用 注释方法。
来自documentation of @Before in JUnit
使用@Before注释公共void方法会导致该方法 在Test方法之前运行。 @Before超类方法将会 在当前班级之前运行。
如此推断,在处理注释时,如果/src/test/java
下的类中没有@Test注释(相对于基于maven的问题),则没有其他注释有意义进行处理。
请注意,如果您使用由@Test method
组成的另一个SubClassTest.java扩展此类,则会执行所有这些方法。因为它们是根据(@Test
)要处理的内容进行处理的。