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

查看:31
本文介绍了通过 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.testng.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:

硒类

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

java -cp C:Userskeating99workspaceFdimTestslib*;C:Userskeating99workspaceFdimTestsin 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:Userskeating99workspaceFdimTests>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 :

  • 从您的 IDEEclipse 获取您的 项目位置,通过 Windows Explorer 转到 项目位置并创建一个目录lib.
  • 转储 lib 目录中的所有库(Selenium jars、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:Userskeating99workspaceFdimTests>set classpath=C:Userskeating99workspaceFdimTestsin;C:Userskeating99workspaceFdimTestslib*;

  • 现在,执行 testng.xml 如下:

    C:Userskeating99workspaceFdimTests>java org.testng.TestNG testng.xml
    

  • 观察测试用例被执行.

  • Observe the Testcase gets executed.

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

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