我在测试类中有很多弹簧测试方法。我想只运行选择性测试。所以我想在同一个类中创建一个测试套件。
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"/testApplicationContext.xml"})
@TransactionConfiguration(defaultRollback=true)
public class TestersChoice {
@Test
@Transactional
public void testAddAccount(){
///do something ....
}
@Test
@Transactional
public void testDeleteAccount(){
///do something ....
}
@Test
@Transactional
public void testReadAccount(){
///do something ....
}
}
如果我运行此Class TestersChoice,所有测试都将运行!我只是想运行testReadAccount而不是其余的。我想创建套件来运行选择性测试。 (我想避免在测试方法上面删除@Test来实现这个目的) 像jUnit testcase中的东西。这是我能够通过将TestersChoice类扩展到TestCase并插入此方法来实现的:
public static TestSuite suite(){
TestSuite suite = new TestSuite();
suite.addTest(new TestersChoice("testDeleteAccount"));
return suite;
}
但是现在我没有扩展TestCase所以我无法将TestersChoice实例添加到套件中!
如何进行选择性测试?
答案 0 :(得分:1)
如果你想要的是对你的测试进行分组,那么问题不在于spring-test,而在于JUnit,其中无法进行分组测试。考虑切换到TestNG(也由spring OOTB支持)。
TestNG建立在JUnit之上,但更强大:请参阅comparison。
Grouping很简单。
的问候,
斯泰恩
答案 1 :(得分:1)
您可以使用Spring IfProfileValue
(如果您总是使用@RunWith(SpringJUnit4ClassRunner.class)
),那么只有在使用-D<propertyname>
指定特定系统属性时才会运行测试。
答案 2 :(得分:0)
对每个不想执行的方法使用@Ignore
。举个例子:
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations={"/testApplicationContext.xml"}) @TransactionConfiguration(defaultRollback=true) public class TestersChoice {
@Test @Transactional @Ignore public void testAddAccount(){ ///do something .... }
@Test @Transactional @Ignore public void testDeleteAccount(){ ///do something .... }
@Test @Transactional public void testReadAccount(){ ///do something .... }
标记为@Ignore
的所有方法都不会被执行