2014-12-04 31 views
0

我希望通過編程使用TestNG的API使用程序化TestNG的

我想,這是可以做到使用

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上下文測試春天資源autowired。我初始化了Spring上下文,但似乎當TestNG運行這個類時,它自己創建了一個SomeTest.class的新實例,不一定使用Spring,然後通過Spring容器發生所有Autowiring,並且@Autowired標記丟失。 (這是我最初的猜測,我可能是錯的)

有沒有一種方法可以運行測試,以便TestNG通過Spring上下文獲取實例。

回答

2

您應該對SpringTest進行測試依賴關係,並使用其testing documentation中的某個解決方案。

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

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

如果您需要交易支持,您可以使用AbstractTransactionalTestNGSpringContextTests。下面是從他們的文檔相關片段有關訪問applicationContextAbstractTestNGSpringContextTests

AbstractTestNGSpringContextTests是一個抽象基類測試是 與TestNG環境中 ApplicationContext測試支持的集成了Spring TestContext框架。當您擴展AbstractTestNGSpringContextTests時,您可以訪問受保護的applicationContext實例變量,該變量可用於執行顯式bean查找或測試整個上下文的狀態。