spring - spring 上下文中的测试套件

标签 spring junit spring-test test-suite

是否可以使用加载的 spring 上下文运行测试套件,如下所示

@RunWith(Suite.class)
@SuiteClasses({ Test1.class, Test2.class })
@ContextConfiguration(locations = { "classpath:context.xml" }) <------
public class SuiteTest {
}

上面的代码显然不会工作,但是有什么方法可以完成这样的行为吗?

这是目前在我的测试套件中使用 spring 上下文的方式:

@BeforeClass
public static void setUp() {
    final ConfigurableApplicationContext context =
            loadContext(new String[] { "context.xml" });
    jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate");
    // initialization of other beans...
}

最佳答案

我已经尝试过你的代码,测试套件正在加载 spring 上下文的情况下运行。您能更详细地解释一下问题是什么吗?

这是代码:

@RunWith(Suite.class)
@SuiteClasses({ Test1.class, Test2.class })
public class SuiteTest {
}

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:context.xml" })
@Transactional
public class Test1 {}

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:context.xml" })
@Transactional
public class Test2 {}

如果您希望 Suite 类拥有自己的应用程序上下文,请尝试以下操作:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:context.xml" })
@Transactional
public class SuiteTest {

    @Test public void run() {
        JUnitCore.runClasses(Test1.class, Test2.class);
    }

}

关于spring - spring 上下文中的测试套件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17484191/

相关文章:

spring - 无参数方法上的@Cacheble 注释

java - 我们如何在 Liquibase XML changlelog 中使用 xinclude ?

java - 如何将相同的单元测试应用于不同的功能

spring-boot - @MockBean 不熟悉 testNG

java - 尝试不同的解决方案后,使用 JUnit4 Runner 进行 Spring 测试不起作用

java - 为 Spring Security 配置 Gradle

java - 在文件中保存数据的文件格式以及如何读取此数据 - Spring MVC

android - 如何使用 Koin 在仪器测试中注入(inject)使用 androidContext 的类?

grails - groovy.lang.MissingPropertyException:否这样的属性:为类创建:

java - 使用 StepScopeTestExecutionListener.class : Still getting "No Scope registered" 对 Step 作用域 Bean 进行 JUnit 测试