java – 如何对大量JUnit测试进行分组/分类
在我们的项目中,我们目前有大量(junit)测试,分为三类:单元,集成,检票口.
我现在想要对这些测试进行分组,以便我只能运行其中一个(或两个)类别.我发现的唯一的东西是junit测试套件和类别,如下所述:http://www.wakaleo.com/component/content/article/267 我的问题是,我不想用@SuiteClasses在Test Suits中声明每一个测试. 有没有办法添加带有通配符/模式的套件类? 解决方法
假设我对这个问题的理解是正确的,实际上可以使用JUnit来完成.下面的代码与JUnit 4.11一起使用,并允许我们将所有测试分为两类:“未分类”和集成.
IntegrationTestSuite.java /** * A custom JUnit runner that executes all tests from the classpath that * match the <code>ca.vtesc.portfolio.*Test</code> pattern * and marked with <code>@Category(IntegrationTestCategory.class)</code> * annotation. */ @RunWith(Categories.class) @IncludeCategory(IntegrationTestCategory.class) @Suite.SuiteClasses( { IntegrationTests.class }) public class IntegrationTestSuite { } @RunWith(ClasspathSuite.class) @ClasspathSuite.ClassnameFilters({ "ca.vtesc.portfolio.*Test" }) class IntegrationTests { } UnitTestSuite.java /** * A custom JUnit runner that executes all tests from the classpath that match * <code>ca.vtesc.portfolio.*Test</code> pattern. * <p> * Classes and methods that are annotated with the * <code>@Category(IntegrationTestCategory.class)</code> category are * <strong>excluded</strong>. */ @RunWith(Categories.class) @ExcludeCategory(IntegrationTestCategory.class) @Suite.SuiteClasses( { UnitTests.class }) public class UnitTestSuite { } @RunWith(ClasspathSuite.class) @ClasspathSuite.ClassnameFilters({ "ca.vtesc.portfolio.*Test" }) class UnitTests { } IntegrationTestCategory.java /** * A marker interface for running integration tests. */ public interface IntegrationTestCategory { } 下面的第一个示例测试未使用任何类别进行注释,因此在运行UnitTestSuite时将包括其所有测试方法,并在运行IntegrationTestSuite时将其排除. public class OptionsServiceImplTest { @Test public void testOptionAssignment() { // actual test code } } 下一个示例在类级别上标记为Integration测试,这意味着在运行UnitTestSuite并将其包含在IntegrationTestSuite中时,将排除其测试方法: @Category(IntegrationTestCategory.class) public class PortfolioServiceImplTest { @Test public void testTransfer() { // actual test code } @Test public void testQuote() { } } 第三个示例演示了一个测试类,其中一个方法没有注释,另一个标记为Integration类. public class MarginServiceImplTest { @Test public void testPayment() { } @Test @Category(IntegrationTestCategory.class) public void testCall() { } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |