【问题标题】:TestNG Error: java.lang.NoSuchMethodErrorTestNG 错误:java.lang.NoSuchMethodError
【发布时间】:2021-09-28 19:44:16
【问题描述】:
        package testSteps;
        
        import java.io.IOException;
        
        
        import org.testng.Assert;
        import org.testng.annotations.DataProvider;
        import org.testng.annotations.Test;
        
        import pageObjects.loginPage;
        import utilities.XLUtils;
        
        public class testLoginDDT extends baseClass{
        
            @Test(dataProvider="LoginData")
            public void loginTestDDT(String uname, String pswd) throws InterruptedException {
        
                loginPage lp = new loginPage(driver);
        
                lp.enterUsername(uname);
        
                lp.enterPassword(pswd);
        
                lp.clickSignIn();
            
                
        //user defined method created to check validation point is present or not
                
                boolean myprop= driver.getPageSource().contains("What’s New");
                if(myprop==true) {
                    Assert.assertTrue(true);
                    lp.closePopUp();
                    lp.clickSignOut();
                    Thread.sleep(2000);
                    driver.switchTo().defaultContent();
                }
                else
                {
                    //captureScreen(driver, "testLoginDDT");
                    driver.switchTo().defaultContent();
                    Assert.assertTrue(false);
                }
                
            }
        
            @DataProvider(name="LoginData")
            String [][] getData() throws IOException{
        
                String path=System.getProperty("user.dir")+"/src/test/java/testData/LoginData.xlsx";
        
                int rownum=XLUtils.getRowCount(path, "Sheet1");
                int colcount=XLUtils.getCellCount(path,"Sheet1",1);
        
                String logindata[][]=new String[rownum][colcount];
        
                for(int i=1;i<=rownum;i++)
                {
                    for(int j=0;j<colcount;j++)
                    {
                        logindata[i-1][j]=XLUtils.getCellData(path,"Sheet1", i,j);
                    }
        
                }
                return logindata;
            }
        
        }
   

TestNG.XML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="TestPlan">

    <listeners>
        <listener class-name="utilities.Reporting" />
    </listeners>

    <test name="SiteRecon Test">
        <parameter name="browser" value="chrome" />
        <classes>
            <!-- <class name="testSteps.test_loginSteps" />  -->
            <class name="testSteps.testLoginDDT" />
        </classes>

    </test>

</suite>

TestNG 跟踪:

 TestNG message -
    java.lang.NoSuchMethodError: org.apache.commons.io.IOUtils.toString(Ljava/io/InputStream;Ljava/nio/charset/Charset;)Ljava/lang/String;
    at io.github.bonigarcia.wdm.versions.Shell.runAndWaitNoLog(Shell.java:66)
    at io.github.bonigarcia.wdm.versions.Shell.runAndWaitArray(Shell.java:55)
    at io.github.bonigarcia.wdm.versions.Shell.runAndWait(Shell.java:49)
    at io.github.bonigarcia.wdm.versions.VersionDetector.getBrowserVersionInWindows(VersionDetector.java:222)
    at io.github.bonigarcia.wdm.versions.VersionDetector.getDefaultBrowserVersion(VersionDetector.java:181)
    at io.github.bonigarcia.wdm.managers.ChromeDriverManager.getBrowserVersionFromTheShell(ChromeDriverManager.java:123)
    at io.github.bonigarcia.wdm.WebDriverManager.detectBrowserVersion(WebDriverManager.java:719)
    at io.github.bonigarcia.wdm.WebDriverManager.resolveDriverVersion(WebDriverManager.java:588)
    at io.github.bonigarcia.wdm.WebDriverManager.manage(WebDriverManager.java:540)
    at io.github.bonigarcia.wdm.WebDriverManager.setup(WebDriverManager.java:288)
    at testSteps.baseClass.setUp(baseClass.java:45)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:133)
    at org.testng.internal.MethodInvocationHelper.invokeMethodConsideringTimeout(MethodInvocationHelper.java:62)
    at org.testng.internal.ConfigInvoker.invokeConfigurationMethod(ConfigInvoker.java:385)
    at org.testng.internal.ConfigInvoker.invokeConfigurations(ConfigInvoker.java:321)
    at org.testng.internal.TestMethodWorker.invokeBeforeClassMethods(TestMethodWorker.java:176)
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:122)
    at java.util.ArrayList.forEach(Unknown Source)
    at org.testng.TestRunner.privateRun(TestRunner.java:794)
    at org.testng.TestRunner.run(TestRunner.java:596)
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:377)
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:371)
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:332)
    at org.testng.SuiteRunner.run(SuiteRunner.java:276)
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:53)
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:96)
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1212)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1134)
    at org.testng.TestNG.runSuites(TestNG.java:1063)
    at org.testng.TestNG.run(TestNG.java:1031)
    at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:115)
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)

pom.XML 依赖:

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.141.59</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/io.github.bonigarcia/webdrivermanager -->
        <dependency>
            <groupId>io.github.bonigarcia</groupId>
            <artifactId>webdrivermanager</artifactId>
            <version>4.3.1</version>
        </dependency>

        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.17</version>
        </dependency>


        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.17</version>
        </dependency>

        <dependency>
            <groupId>com.aventstack</groupId>
            <artifactId>extentreports</artifactId>
            <version>3.1.2</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.testng/testng -->
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>7.4.0</version>
            <scope>test</scope>
        </dependency>


        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.0</version>
        </dependency>

        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-io</artifactId>
            <version>1.3.2</version>
        </dependency>   
        

        <!-- https://mvnrepository.com/artifact/log4j/log4j -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

    </dependencies>

基类代码:

package testSteps;

import java.io.File;
import java.io.IOException;
import java.util.concurrent.TimeUnit;

import org.apache.commons.io.FileUtils;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.edge.EdgeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Parameters;

import io.github.bonigarcia.wdm.WebDriverManager;
import utilities.ReadConfig;


public class baseClass {

    ReadConfig readconfig= new ReadConfig();

    public String baseURL=readconfig.getAppURL();
    public String email=readconfig.getEmail();
    public String password=readconfig.getPassword();


    public static WebDriver driver;

    @Parameters("browser")
    @BeforeClass
    public void setUp(String br) {

        if(br.equals("chrome")) {

            WebDriverManager.chromedriver().setup();
            driver= new ChromeDriver(); 
            

        }
        else if(br.equals("firefox")) {
            WebDriverManager.firefoxdriver().setup();
            driver= new FirefoxDriver();
        }
        else if(br.equals("edge")) {
            WebDriverManager.edgedriver().setup();
            driver= new EdgeDriver();
        }

        driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
        driver.get(baseURL);
    }

    @AfterClass
    public void tearDown() {
        driver.close();
        driver.quit();

    }

    public void captureScreen(WebDriver driver, String tname) throws IOException {
        TakesScreenshot ts = (TakesScreenshot) driver;
        File source = ts.getScreenshotAs(OutputType.FILE);
        File target = new File(System.getProperty("user.dir") + "/Screenshots/" + tname + ".png");
        FileUtils.copyFile(source, target);
        System.out.println("Screenshot taken");
    }
}

我正在尝试运行此代码,但这给出了错误。在测试运行期间,它会跳过测试用例并在控制台上显示此消息: 测试计划 总测试运行:6,通过:0,失败:0,跳过:6 配置失败:1,跳过:1 我无法找到此问题的根本原因。请帮忙。谢谢

【问题讨论】:

  • 你是怎么运行这个的?
  • 使用 TestNG.xml 运行

标签: java eclipse selenium testng


【解决方案1】:

所以如果你看这个:org.apache.commons.io.IOUtils.toString

这不是标准 JDK 的一部分。您的 TestNG 工具、IDE 或其他任何东西,我不知道,您也没有说明,但它正在调用不在您的类路径上的 JAR 中的方法。

例如,如果您使用 Gradle 构建并运行上面的代码,则需要将此行添加到您的成绩构建中:

// https://mvnrepository.com/artifact/commons-io/commons-io
implementation group: 'commons-io', name: 'commons-io', version: '2.11.0'

【讨论】:

  • 不使用 Gradle,它是一个 maven 项目。但我已经更新了 pom.xml 中的依赖项。更新了 Ques 中的 pom 依赖项。身体。请检查。谢谢
猜你喜欢
  • 2020-09-07
  • 2020-12-01
  • 2017-09-19
  • 1970-01-01
  • 2017-12-30
  • 2016-09-10
  • 2020-06-20
  • 2016-11-19
  • 2021-08-12
相关资源
最近更新 更多