1

TestNG ファクトリをネストできることを知りました。わーい!ただし、すべてのテスト名が同じであることは好きではありません。これは私の例です:

testng.xml:

<suite>
    <test name="TNGTST" >
        <classes>
            <class name="FactoryLevel1" />
        </classes>
    </test>
</suite>

FactoryLevel1.java:

import org.testng.annotations.Factory;
public class FactoryLevel1 {
    @Factory
    public Object[] createTest() {
        Object[] res = new Object[3];
        for (int i = 1; i <= 3; i++)
            res[i - 1] = new FactoryLevel2(i);
        return res;
    }
}

FactoryLeve2.java:

import org.testng.annotations.Factory;
public class FactoryLevel2 {
    int inst;
    public FactoryLevel2(int inst) {
        this.inst = inst;
    }
    @Factory
    public Object[] createTest() {
        Object[] res = new Object[10];
        for (int i = 1; i <= 10; i++)
            res[i - 1] = new TestClass(i * inst);
        return res;
    }
}

TestObj.java:

import org.testng.annotations.Test;
public class TestObj {
    int inst;
    public TestObj(int inst) {
        this.inst = inst;
    }
    @Test
    public void printMethod() {
        System.out.println("Instance: " + inst);
    }
}

私の問題は、Intellij IDEA が名前付きのすべてのテストを表示し、TNGTST [printMethod()]Jenkins がすべてのテストに対して同じようなものを表示すると思います (これらのツールがどのようにそれを取得するのかわかりません)。非静的な方法でテスト用に独自の名前を作成できますか?

4

2 に答える 2

3

テストクラスを実装org.testng.ITestしてオーバーライドgetName()し、必要なものを返すようにします。IDEA はこれを尊重していると思います (100% 確実ではありませんが、試してみてください)。

于 2012-04-30T17:50:34.227 に答える