通过CLI执行testng.xml时出错:无法找到或加载主类org.testng.TestNG [英] Error executing testng.xml through CLI : Could not find or load main class org.testng.TestNG

查看:157
本文介绍了通过CLI执行testng.xml时出错:无法找到或加载主类org.testng.TestNG的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我进入之前,我是硒的新手,等等。我查找了这个问题的所有答案,仍然无法解决问题。我的%claspath%等等都是正确的。 jar文件位于正确的文件夹中。我完全不知道为什么这不起作用。我的猜测是,我正在做一些愚蠢的事情,专家会很快发现错误。

Before I get into it, I'm a newbie with selenium and so on. I have looked up all the answers to this issue and still haven't been able to fix the problem. My %claspath% and so on are all correct. The jar files are in the correct folders and such. I'm totally lost to why this isn't working. My guess is that I'm doing something silly and an expert would spot the error quickly.

我能够在Eclipse中运行以下测试,它会打开firefox并运行测试没有问题。如果我从cmd或Jenkins运行测试,我会收到以下错误:错误:无法找到或加载主类org.test.TestNG

I am able to run the following test within Eclipse, it opens firefox and runs the test with no issues. If I run the test from cmd or Jenkins I get the following error: Error: Could not find or load main class org.testng.TestNG

我已用虚拟数据替换下面的实际信息:

I have replaced actual information below with dummy data:

Selenium class

package package1;

import static org.junit.Assert.fail;

import java.util.concurrent.TimeUnit;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.NoAlertPresentException;
import org.openqa.selenium.NoSuchElementException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class login {
  private WebDriver driver;
  private String baseUrl;
  private boolean acceptNextAlert = true;
  private StringBuffer verificationErrors = new StringBuffer();

  @Before
  public void setUp() throws Exception {
    System.setProperty("webdriver.gecko.driver","C:\\gecko\\geckodriver.exe");
    driver = new FirefoxDriver();
    baseUrl = "http://example.com";
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
  }

  @Test
  public void testLogin() throws Exception {
    driver.get(baseUrl + "index.php");
    driver.findElement(By.id("email")).clear();
    driver.findElement(By.id("email")).sendKeys("myemail@example.ie");
    driver.findElement(By.id("password")).clear();
    driver.findElement(By.id("password")).sendKeys("mypassword");
    driver.findElement(By.xpath("//input[@value='Login »']")).click();
  }

  @After
  public void tearDown() throws Exception {
    driver.quit();
    String verificationErrorString = verificationErrors.toString();
    if (!"".equals(verificationErrorString)) {
      fail(verificationErrorString);
    }
  }

  private boolean isElementPresent(By by) {
    try {
      driver.findElement(by);
      return true;
    } catch (NoSuchElementException e) {
      return false;
    }
  }

  private boolean isAlertPresent() {
    try {
      driver.switchTo().alert();
      return true;
    } catch (NoAlertPresentException e) {
      return false;
    }
  }

  private String closeAlertAndGetItsText() {
    try {
      Alert alert = driver.switchTo().alert();
      String alertText = alert.getText();
      if (acceptNextAlert) {
        alert.accept();
      } else {
        alert.dismiss();
      }
      return alertText;
    } finally {
      acceptNextAlert = true;
    }
  }
}

项目结构

textng.xml

<suite name="SampleSuite">

    <test name="LearningJenkins">

        <classes>

            <class name="package1.login"></class>

        </classes>

    </test>

</suite>

run.bat

cd C:\Users\keating99\workspace\FdimTests

java -cp C:\Users\keating99\workspace\FdimTests\lib*;C:\Users\keating99\workspace\FdimTests\bin org.testng.TestNG testng.xml






我确信我已经完美地设置了硒测试。我检查了类路径和项目路径,一切似乎都没问题。


I am certain I have set up the selenium test perfectly. I have checked the class path and project path and all seems to be OK.

任何帮助都会有很大的帮助。再次提起所有其他答案,没有任何运气。预先感谢任何人的帮助:)

Any help at all would be a great help. Again have have looked up all the other answers with no luck whatsoever. Thanks in advance for any help people :)

更新

C:\Users\keating99\workspace\FdimTests>java org.testng.TestNG testng.xml
Exception in thread "main" java.lang.NoClassDefFoundError: bsh/EvalError
        at org.testng.TestRunner.<init>(TestRunner.java:99)
        at org.testng.SuiteRunner$DefaultTestRunnerFactory.newTestRunner(SuiteRunner.java:508)
        at org.testng.SuiteRunner.init(SuiteRunner.java:142)
        at org.testng.SuiteRunner.<init>(SuiteRunner.java:106)
        at org.testng.TestNG.createSuiteRunner(TestNG.java:1116)
        at org.testng.TestNG.createSuiteRunners(TestNG.java:1103)
        at org.testng.TestNG.runSuitesLocally(TestNG.java:955)
        at org.testng.TestNG.run(TestNG.java:900)
        at org.testng.TestNG.privateMain(TestNG.java:1182)
        at org.testng.TestNG.main(TestNG.java:1146)
Caused by: java.lang.ClassNotFoundException: bsh.EvalError
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        ... 10 more


推荐答案

执行 testng.xml 的最简单方法如下:

The simplest way to execute your testng.xml is as follows :


  • IDE 获取项目位置,即 Eclipse ,通过 Windows资源管理器转到项目位置并创建目录 lib

  • 转储所有库( lib 目录中的Selenium jar,TestNG)。

  • 项目目录,通过CLI提供以下类路径:

  • Get your Project Location from your IDE i.e. Eclipse, through Windows Explorer go to the Project Location and create a directory lib .
  • Dump all the libraries (Selenium jars, TestNG) in the lib directory.
  • From Project Directory, through CLI provide the following classpath:

C:\Users\keating99\workspace\FdimTests>set classpath=C:\Users\keating99\workspace\FdimTests\bin;C:\Users\keating99\workspace\FdimTests\lib\*;


  • 现在,按如下方式执行 testng.xml

    C:\Users\keating99\workspace\FdimTests>java org.testng.TestNG testng.xml
    


  • 观察测试用例是否已执行。

  • Observe the Testcase gets executed.

    这篇关于通过CLI执行testng.xml时出错:无法找到或加载主类org.testng.TestNG的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

  • 查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆