JUnit从Spring上下文中的测试中排除基类

时间:2013-05-21 07:30:13

标签: java spring unit-testing

我的所有单元测试都有与Spring注释相同的标题:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:spring/spring-master.xml"})
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = false)
@Transactional()

我将它们移到了基类,我的所有测试现在扩展它:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:spring/spring-master.xml"})
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = false)
@Transactional()
public class DomainObjectBaseTest {
...
public class SomeTest extends DomainObjectBaseTest {

现在,当我正在运行所有测试时,我正在使用DomainObjectBaseTest:

java.lang.Exception: No runnable methods

我的问题是如何避免它?我可以删除@RunWith,但在这种情况下,我必须将注释应用于所有其他测试。额外代码太多,不喜欢它。

或许,作为替代方案,我可以以某种方式在Spring组注释,命名它,并从我的测试中引用该组,请告诉我是否可能。在这种情况下,我将删除基类。

并且可能有一种方法可以告诉我们不应该测试这个类。我正在使用JUnit4。

1 个答案:

答案 0 :(得分:10)

使您的基类抽象化。问题是我认为它不是抽象的,所以测试运行器试图运行它并因此(IMHO愚蠢)原因失败。但它忽略了抽象类。