如何从另一个java类

时间:2016-11-02 08:06:54

标签: java gradle testng hudson

我有3个java测试类。  1. ListenerTest1.java  2. ListenerTest2.java  3. ListenerMain.java

以上两个testfixture类,即ListenerTest1.java和ListenerTest2.java都有测试方法。 另外,将build.gradle文件设置为: -

task automationTests(type: Test) {

    systemProperty 'serviceType', System.properties['serviceType']


    useTestNG {
        useDefaultListeners = true
        suiteXmlBuilder().suite(name: 'Testing case') {
            test(name: 'ServiceUITests', annotations: 'JDK', verbose: '1') {
                classes([:]) {

                    'class'(name: 'company.platform.ListenerMain')

                }
            }
        }
    }
}

因此,在运行我的hudson作业时,它会调用任务,即 automationTests 并运行我的ListenerMain类。 我需要在ListenerMain类文件中添加if / else条件,该文件将根据在hudson作业中添加的System.property来区分运行上述两个类中的任何一个,即ListenerTest1.java或ListenerTest2.java。

E.g

@Listeners(value = {PreconditionListener.class})
public class ListenerMain  {
    private static String serviceTypeUseParameter ;
    private static Logger logger = LogManager.getLogger(ListenerMain .class.getName());
    @BeforeClass
    //TestNg Annotation
    public void setup()
    {
        //#############   Hudson job parameter is serviceType ##########
serviceTypeUseParameter = System.getProperty("serviceType");
        if (serviceTypeUseParameter.equals("ListenerTest1Method")){
        // Run ListenerTest1 class
        }
        else{
        // Run ListenerTest2 class
        }
    }
}

根据if / else条件加载类需要添加什么代码? 如果需要,我可以在ListenerMain类中添加main方法。

2 个答案:

答案 0 :(得分:0)

您可以在if / else代码中添加以下代码。在runClasses方法中,您可以指定测试类。

Result result = JUnitCore.runClasses(ListenerTest1.class);

答案 1 :(得分:0)

TestNG有两个选项:

  1. 实施annotation transformer
  2. 使用BeanShell
  3. 您的注释变换器将测试条件,然后覆盖@Test注释以添加属性" enabled = false"如果条件不满意。