【问题标题】:Running a Spring context test using programatic TestNG使用程序化 TestNG 运行 Spring 上下文测试
【发布时间】:2014-12-04 18:02:23
【问题描述】:

我想使用 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 上下文获取实例。

【问题讨论】:

    标签: java spring testng


    【解决方案1】:

    您应该对SpringTest 进行测试依赖,并使用他们的testing documentation 中的一种解决方案。

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

    如果您需要事务支持,您可以使用AbstractTransactionalTestNGSpringContextTests。这是他们文档中有关在AbstractTestNGSpringContextTests 中访问applicationContext 的相关sn-p:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多