我通过创建类Main将testng文件转换为jar,并在其中包含main方法

package uatFramework;

import org.testng.TestListenerAdapter;
import org.testng.TestNG;

public class Mainone{
    public static void main(String[] args) {
    TestListenerAdapter tla = new TestListenerAdapter();
    TestNG testng = new TestNG();
    testng.setTestClasses(new Class[] { RMS_Login.class });
    testng.addListener(tla);
    testng.run();
    }
}


但是RMS_Login类也扩展了BeforeSfterSuite类。
现在,当我以Java应用程序的形式运行main->浏览器已成功打开和关闭时出现,但页面未加载,并且出现以下错误:

@Parameters({"sUsername","sPassword","sUrl"})
    public void uatRMSLoginTest(String sUsername, String sPassword,java.lang.String sUrl) throws InterruptedException, IOException
      {
        FileWriter writer = new FileWriter(file,true);
        String filename= "screenshots";
        File filepath =new File(folderpath+"/" +filename);
        filepath.mkdirs();
        if (System.getenv("sURL") != null)
        {
           ....
        }
 }


作为org.testng.TestNGException:
参数'sUsername'是方法uatRMSLoginTest上的@Test必需的,但尚未标记为@Optional或已定义
    在uatFramework.Mainone.main(Mainone.java:13)上,即在main方法中运行testng.run

最佳答案

您的代码的问题在于它没有注入@Test方法通过@Parameters注释期望的必需参数。

这是一个包含工作代码的代码。

import org.testng.ITestNGListener;
import org.testng.TestListenerAdapter;
import org.testng.TestNG;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
import org.testng.xml.XmlClass;
import org.testng.xml.XmlSuite;
import org.testng.xml.XmlTest;

import java.util.Collections;

public class Mainone {
    public static void main(String[] args) {
        TestListenerAdapter tla = new TestListenerAdapter();
        TestNG testng = new TestNG();

        XmlSuite xmlSuite = new XmlSuite();
        xmlSuite.getParameters().put("sUsername", "admin");
        xmlSuite.getParameters().put("sPassword", "admin");
        xmlSuite.getParameters().put("sUrl", "http://localhost");
        xmlSuite.setName("Sample_Suite");
        XmlTest xmlTest = new XmlTest(xmlSuite);
        xmlTest.setName("Sample_Test");
        xmlTest.setClasses(Collections.singletonList(new XmlClass(RMS_Login.class)));
        testng.addListener((ITestNGListener) tla);
        testng.setXmlSuites(Collections.singletonList(xmlSuite));
        testng.run();
    }

    public static class RMS_Login {

        @Parameters({"sUsername", "sPassword", "sUrl"})
        @Test
        public void uatRMSLoginTest(String sUsername, String sPassword, String sUrl) {
            //Since I don't know what this method is supposed to do,
            //Just printing them out.
            System.err.println("UserName " + sUsername);
            System.err.println("Password " + sPassword);
            System.err.println("URL " + sUrl);
        }
    }
}


这是输出

UserName admin
Password admin
URL http://localhost

===============================================
Sample_Suite
Total tests run: 1, Failures: 0, Skips: 0
===============================================

10-06 05:20
查看更多