JUnit测试在不应该执行时执行

时间:2016-04-29 07:39:17

标签: java spring maven junit spring-test

我是JUnit的新手。以下是我的类层次结构,其中层次结构顶部和底部的类具有@Test方法。当我执行整个群时,位于层次结构中间的ConverterBaseEnquiryTest也会被执行。 (这是我的猜测,因为我在surefire报告中看到了此名称的例外情况。)

我从ConverterBaseEnquiryTest收到初始化错误,因为它不应该被执行。有没有办法弄清楚为什么会这样?

以下是我的等级:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { 
    "classpath:spring/test-default-context.xml"
})
@TransactionConfiguration( transactionManager="profile.transactionManager", defaultRollback=false )
@Ignore
public class BaseCommonTest extends AbstractTransactionalJUnit4SpringContextTests {


abstract public class ConverterBaseTest<F,T> extends BaseCommonTest {
    // ...
}

public class ConverterBaseEnquiryTest<F, T> extends ConverterBaseTest<Enquiry, T> {
    // ...
}

public class EnquiryToDvsMedicareRequestConverterTest extends ConverterBaseEnquiryTest<Enquiry, DvsMedicareRequest> {
    // ...
}

1 个答案:

答案 0 :(得分:2)

我认为这是因为@Ignore注释不可继承,因此JUnit将在子类中执行测试。 (虽然发布堆栈跟踪会对我们有帮助)。

这意味着您还需要在所有子类上放置@Ignore

或者,为了避免这种情况,您可以在基类上使用@IfProfileValue(继承)来禁用测试。这是SpringJUnit4ClassRunner支持的Spring注释。