TestNG - 无法让@Factory 工作 [英] TestNG - can't get @Factory to work

查看:34
本文介绍了TestNG - 无法让@Factory 工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

试图学习如何使用@Factory,但是当我以两种方式之一执行它时,我要么出错,要么根本没有执行任何测试.我在 Eclipse 中调用 XML 文件,方法是右键单击它,然后选择Run As TestNG Suite".

Trying to learn how to use @Factory, but when I execute it in one of two ways, i get either an error or no tests get executed at all. I am invoking the XML file in Eclipse, by right-clicking on it, and selecting "Run As TestNG Suite".

使用此 XML 文件,套件会执行,但选择/执行零测试:

With this XML file, the suite executes, but zero tests are picked up/executed:

<suite name="suite1" verbose="5">
    <test name="test1">
        <classes>
            <class name="qa.tests.MyFactory"/>
        </classes>
    </test>
</suite>

使用此 XML 文件时,我的测试失败并出现异常:

With this XML file, i get a test failure with an exception:

<suite name="suite1" verbose="5">
    <test name="test1">
        <packages>
            <package name="qa.tests" />
        </packages>
    </test>
</suite>

错误:

Can't invoke public void qa.tests.MyTest.testSample1(): either make it static or add a no-args constructor to your class

MyFactory.java 类:

MyFactory.java class:

package qa.tests;
import org.testng.annotations.Factory;

public class MyFactory {
    @Factory
    public Object[][] dp() {
        Object[][] data = new Object[][] {
            { "1", "TestCase1", "Sample test 1" },
            { "2", "TestCase2", "Sample test 2" },
            { "3", "TestCase3", "Sample test 3" }
        };
        return data;
    }
}

MyTest.java 类:

MyTest.java class:

package qa.tests;
import org.testng.annotations.Test;
import static org.testng.Assert.*;

public class MyTest {
    private String num;
    private String name;
    private String desc;

     public MyTest(String num, String name, String desc) {
         this.num = num;
         this.name = name;
         this.desc = desc;
     }

     @Test()
     public void testSample1() {
         System.out.println(num + ", " + name + ", " + desc);
         assertTrue( true );
     }
}

我到底做错了什么?

推荐答案

首先,Factory 应该返回一个一维的 Object 数组.并且该工厂方法应该返回您尝试执行的测试类的实例.

First of all ,a Factory should return a one dimension Object array. And that factory method should return instances of the test class that you are trying to execute.

所以工厂会运行你的测试,如果你改成这个

So the factory will run your tests, if you change to this

public class MyFactory {
    @Factory
    public Object[] dp() {
        Object[] data = new Object[] {
            new MyTest("1", "TestCase1", "Sample test 1"), new Mytest("1", "TestCase1", "Sample test 1"), new MyTest("1", "TestCase1", "Sample test 1")
        };
        return data;
    }
}

这篇关于TestNG - 无法让@Factory 工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆