简体   繁体   English

TestNG 错误:java.lang.NoSuchMethodError

[英]TestNG Error: java.lang.NoSuchMethodError

        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测试NG文件

<?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 Trace:测试跟踪:

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

Baseclass code:基类代码:

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");
    }
}

I'm trying to run this code but this is giving the error.我正在尝试运行此代码,但这给出了错误。 During test run it is skipping the testcase and showing this message on Console: TestPlan Total tests run: 6, Passes: 0, Failures: 0, Skips: 6 Configuration Failures: 1, Skips: 1 I'm unable to find the root cause for this problem.在测试运行期间,它跳过测试用例并在控制台上显示此消息:TestPlan Total tests run: 6, Passes: 0, Failures: 0, Skips: 6 Configuration Failures: 1, Skips: 1 我无法找到根本原因对于这个问题。 Please Help.请帮忙。 Thanks谢谢

So if you look at this: org.apache.commons.io.IOUtils.toString所以如果你看看这个:org.apache.commons.io.IOUtils.toString

That's NOT part of the standard JDK.这不是标准 JDK 的一部分。 Your TestNG tool, IDE or whatever that is, I have no idea and you haven't stated it but it is calling a method in a JAR that is NOT on your class path.您的 TestNG 工具、IDE 或其他任何东西,我不知道,您也没有说明,但它正在调用不在您的类路径上的 JAR 中的方法。

So for example, if you are using Gradle to build and run this code above you need to add this line into your grade build:因此,例如,如果您使用 Gradle 构建并运行上面的代码,则需要将此行添加到您的成绩构建中:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM