我通过创建类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
===============================================