2012-07-26 75 views
0

假设我有一个简单的测试,像这样:TestNG的:在Eclipse插件测试名

public class SimpleTestFactory { 
    private int instanceNumber; 

    @Factory(dataProvider="provideTestData") 
    public SimpleTestFactory(int instanceNumber) { 
     this.instanceNumber = instanceNumber; 
    } 

    @DataProvider 
    public static Object[][] provideTestData() { return new Object[][] {{1},{2}}; } 

    @Test 
    public void testOne() { System.out.printf("Test 1, Instance %d%n", instanceNumber); } 
} 

当我在Eclipse中运行这个,我只得到一个入口,而不是两个在“所有测试”选项卡;两个测试实例在SimpleTestFactory - >testOne()下“组合在一起”。此外,假设testOne()中存在一个if-block,其实例2失败。然后,在“所有测试”选项卡中的结果,它可能会显示(取决于实例1还是实例2是第一个)测试是否通过堆栈跟踪或测试失败,没有堆栈跟踪,就好像一个实例的结果覆盖另一个实例。

我如何得到它,以便两个实例分开显示?那就是,我得到类似SimpleTestFactory[1] - >testOne()SimpleTestFactory[2] - >testOne()?如果我在第二个测试中添加,testTwo()

回答

0

让您的测试工具org.testng.ITest覆盖getName()返回实例的名称。

+0

假设我这样做,'getName()'将'instanceNumber'返回为'String'。假设我还有第二种测试方法testTwo()。如果我在Eclipse中运行它,我所看到的只是'instanceNumber',而没有提及'testOne()'或'testTwo()'。所以,现在我有相反的问题,即知道哪个实例有失败的测试,但不知道哪个测试失败了。 – 2012-07-29 10:24:34

+0

另外,看起来'getName()'不是'ITest'接口的一部分;我在这里指的是'getTestName()'。 – 2012-07-30 18:36:53