加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 通过CLI执行testng.xml时出错:无法找到或加载主类org.t

发布时间:2020-12-15 07:36:46 所属栏目:Java 来源:网络整理
导读:在我进入它之前,我是硒的新手,等等.我查找了这个问题的所有答案,仍然无法解决问题.我的%claspath%等等都是正确的. jar文件位于正确的文件夹中.我完全迷失了为什么这不起作用.我的猜测是,我正在做一些愚蠢的事情,专家会很快发现错误. 我能够在Eclipse中运行
在我进入它之前,我是硒的新手,等等.我查找了这个问题的所有答案,仍然无法解决问题.我的%claspath%等等都是正确的. jar文件位于正确的文件夹中.我完全迷失了为什么这不起作用.我的猜测是,我正在做一些愚蠢的事情,专家会很快发现错误.

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

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

硒类

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:geckogeckodriver.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;
    }
  }
}

项目结构

This is my project structure:

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:Userskeating99workspaceFdimTestsbin org.testng.TestNG testng.xml

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

任何帮助都将是一个很大的帮助.再次提起所有其他答案,没有任何运气.在此先感谢任何帮助人:)

UPDATE

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的最简单方法如下:

>从IDE获取项目位置,即Eclipse,通过Windows资源管理器转到项目位置并创建目录库.
>将所有库(Selenium jar,TestNG)转储到lib目录中.
>从Project Directory,通过CLI提供以下类路径:

C:Userskeating99workspaceFdimTests>set classpath=C:Userskeating99workspaceFdimTestsbin;C:Userskeating99workspaceFdimTestslib*;

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

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

>观察Testcase被执行.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读