java - JUnit 测试在不应该执行的时候执行

标签 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> {
    // ...
}

最佳答案

我认为这是因为@Ignore注解是不可继承的,所以JUnit会在子类中执行测试。 (尽管发布堆栈跟踪会对我们有所帮助)。

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

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

关于java - JUnit 测试在不应该执行的时候执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36932421/

相关文章:

java - Android:Java 是否对许多类效率较低

java - Spring注解属性设置与方法调用

java - Spring 应用程序无法使用 jndi 和正在运行的 Tomcat 7 服务器创建 DataSource bean

java - 将 Maven 存储库列入黑名单

java - Spring Session JDBCTokenRepository 覆盖默认表

java - 如何在JPA + REST中设置外键

maven - 尝试通过 jenkins 将 Artifact 部署到 nexus 时出现错误 "Return code is: 401, ReasonPhrase: Unauthorized."

java - 下载所有依赖 Java 库(递归)

java - JSP 无法从输入中获取值

java - @JsonFilter,自定义和性能