java - java中从testng到jar的转换显示错误

标签 java testng

我通过创建一个 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 类。 现在,当我将 main 作为 java 应用程序运行时 -> 成功打开和关闭浏览器,但页面未加载,并且出现以下错误:

@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: uatRMSLoginTest 方法上的 @Test 需要参数“sUsername”,但尚未标记为 @Optional 或已定义 在 uatFramework.Mainone.main(Mainone.java:13) 即 main 方法中的 testng.run

最佳答案

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

这是一个代码,其中包含工作代码。

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
===============================================

关于java - java中从testng到jar的转换显示错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45755991/

相关文章:

java - 我如何获得对象数组 :java8 的值的总和

Java while循环及其他

java - 在 Spring Boot Controller 中使用对象代替多个参数和文件

java - 在一个testng xml中包含多个testng xml

java - 将接口(interface)列表作为函数中的参数传递

java - 用 C 或 Java 捕获操纵杆输入

java - TestNG:在类路径中找不到类,testng.xml

java - 自定义监听器始终在 TestNG 中的 @Test 注释内执行

java - 如何在 Jenkins 上自动重新运行失败的 TestNG 测试

java - 通过 Maven/Testng 通过动态自定义 TestNG 文件运行测试