JUnit 测试在不应该执行的时候执行
JUnit test is getting executed when it's not supposed to
我是 JUnit
的新手。以下是我的 class 层次结构,其中层次结构顶部和底部的 classes 具有 @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> {
// ...
}
我认为这是因为@Ignore
注解不可继承,所以JUnit会在子classes中执行测试。 (尽管发布堆栈跟踪会对我们有所帮助)。
这意味着您还需要将 @Ignore
放在所有子 class 上。
或者,为了避免这种情况,您可以在 base-class 上使用 @IfProfileValue
(继承)来禁用测试。这是 SpringJUnit4ClassRunner
.
支持的 Spring 注释
我是 JUnit
的新手。以下是我的 class 层次结构,其中层次结构顶部和底部的 classes 具有 @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> {
// ...
}
我认为这是因为@Ignore
注解不可继承,所以JUnit会在子classes中执行测试。 (尽管发布堆栈跟踪会对我们有所帮助)。
这意味着您还需要将 @Ignore
放在所有子 class 上。
或者,为了避免这种情况,您可以在 base-class 上使用 @IfProfileValue
(继承)来禁用测试。这是 SpringJUnit4ClassRunner
.