繁体   English   中英

使用程序化TestNG运行Spring上下文测试

[英]Running a Spring context test using programatic TestNG

我想使用TestNG API以编程方式运行我的集成测试

我认为可以使用

TestListenerAdapter tla = new TestListenerAdapter();
org.testng.TestNG testng = new org.testng.TestNG();
testng.setTestClasses(new Class[] { SomeTest.class });
testng.addListener(tla);
testng.run();

现在在SomeTest类中,我可以自动连接一些弹簧资源。 我初始化了spring上下文,但似乎当TestNG运行类时,它自己创建了SomeTest.class的新实例,而不必使用Spring,然后通过spring容器和@Autowired标记发生的所有自动装配都丢失了。 (这是我最初的猜测,我可能错了)

有没有一种方法可以运行测试,以便TestNG通过Spring上下文获取实例。

您应该对SpringTest进行测试依赖,并使用其测试文档中的解决方案之一。

@ContextConfiguration(locations = { "classpath:spring-test-config.xml" })
public class SomeSpringTest extends AbstractTestNGSpringContextTests {
    @Autowired
    private SomeClass someClass;

    @Test
    public void someTest() {
        ...
    }
}

如果需要事务支持,则可以使用AbstractTransactionalTestNGSpringContextTests 这是他们文档中有关在AbstractTestNGSpringContextTests访问applicationContext的相关片段:

AbstractTestNGSpringContextTests是一个抽象的基础测试类,该类将Spring TestContext Framework与TestNG环境中的显式ApplicationContext测试支持集成在一起。 扩展AbstractTestNGSpringContextTests时,可以访问受保护的applicationContext实例变量,该变量可用于执行显式Bean查找或测试整个上下文的状态。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM