2013-05-21 15 views
3

我所有的单元测试和春天有标注相同的标题:的JUnit exluding基类

@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。

回答

8

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

+1

+1。我使用JUnit&JMock时遇到了同样的问题;这根本不是一个春天的问题。 – Jules

+0

感谢您的回复! – Alexandr