【问题标题】:TestNG, factory and parametrized Test descriptionTestNG,工厂和参数化测试描述
【发布时间】:2012-04-30 13:33:19
【问题描述】:

我刚刚了解到我可以嵌套 TestNG 工厂。耶!但是我不喜欢所有测试名称都相同。这是我的例子:

testng.xml:

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

FactoryLeve1.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 会为所有测试显示类似的东西(我不知道这些工具是如何获得它的)。我能否以非静态方式为测试创建自己的名称?

【问题讨论】:

    标签: java testing testng factory parameterized


    【解决方案1】:

    让您的测试类实现 org.testng.ITest 并覆盖 getName() 以返回您想要的内容。我相信 IDEA 尊重这一点(不是 100% 肯定,试试吧)。

    【讨论】:

      【解决方案2】:

      Cedric Beust 的解决方案是正确的(实现 org.testng.ITest)。

      该方法被称为 getTestName

      @Override
      public String getTestName() {
          return "custom_" + i++;
      }
      

      IDEA 14 向它致敬:

      【讨论】:

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