【问题标题】:Need correct step for Bat file creation using (TestNG.xml + Maven)需要使用(TestNG.xml + Maven)创建 Bat 文件的正确步骤
【发布时间】:2018-06-28 11:31:29
【问题描述】:

我想创建正确的 Bat 文件

我正在使用 Maven + Selenium(TestNG)

我尝试了许多不同的方法来解决异常,但它是最常见的异常之一:无法找到或加载主类/java.lang.ClassNotFoundException

在我的 Maven 项目中没有 bin 或 lib 文件夹,我想知道它。是否从 .m2(Maven) 安装中调用库。

要调用类文件,在我的 maven 项目 .class 文件中的位置类似于:E:\testBatchDemo\target\classes\mytest

这是我迄今为止尝试过的示例,

set projectLocation=E:\testBatchDemo
cd %projectLocation%   
set classpath=E:\testBatchDemo\target\classes\mytest; 
java -cp %classpath% C:\Users\Desktop-pc\.m2\repository\org\testng\testng\6.14.3\testng-6.14.3.jar; C:\Users\Desktop-pc\.m2\repository\org\seleniumhq\selenium\selenium-java\3.12.0\selenium-java-3.12.0.jar; org.testng.TestNG %projectLocation%\testng.xml
pause

任何人都可以提供帮助,需要调用哪个库或如何实现正确的 .class 路径。

【问题讨论】:

    标签: java maven batch-file selenium-webdriver testng


    【解决方案1】:

    根据您的问题描述,我认为在跳入解决方案之前,我们需要解决某些灰色区域。

    • 我想知道要创建正确的batch(即.bat)文件:从根本上说,Maven 是一个构建工具,它与@987654325 一起广泛使用@ 并且不需要任何 Windows 批处理 文件。
    • 如果您的用例是将Windows批处理文件传递给Jenkins以进行持续集成,那么您需要验证此步骤如果 Windows 批处理 文件能够启动您的 Test Suite 的执行。
    • 不过,Jenkins 也可以通过 pom.xmlMaven 启动您的 Test Suite 的执行。

    现在,您的 用例 必须符合上述要求之一,如下所述:

    • Windows 批处理文件 + TestNG
    • Jenkins + TestNG
    • Jenkins + Maven

    正如您对 Windows 批处理文件 文件的广泛讨论,这里是第一个选项 Windows 批处理文件 + TestNG 的相关详细信息:

    • TestNG@Test注解写一个简单的代码块如下:

      package demoJenkins;
      
      import org.testng.annotations.Test;
      
      public class DemoJenkinsJob 
      {
      
          @Test
          public void testJenkins()
          {
      
              System.out.println("Welcome to Jenkins World");
          }
      }
      
    • 运行身份 TestNG Test

    • 在成功执行时,使用TestNG -> Convert to TestNGtestng.xml 的转换被创建。
    • testng.xml 看起来像:

      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
      <suite name="Suite">
        <test name="Test">
          <classes>
            <class name="demoJenkins.DemoJenkinsJob"/>
          </classes>
        </test> <!-- Test -->
      </suite> <!-- Suite -->
      
    • 从您的IDE(即Eclipse)获取绝对项目位置,浏览到子目录,创建一个目录lib

    • 复制 lib 目录中的所有相关 jar 和库(SeleniumTestNG jar)。

      • selenium-server-standalone-3.13.0.jar
      • org.testng_6.14.2.r201802161450.jar
      • com.beust.jcommander_1.72.0.jar
      • org.apache-extras.beanshell.bsh_2.0.0.b6.jar
      • org.yaml.snakeyaml_1.17.0.jar
    • 通过CLI浏览到项目目录并提供以下类路径

      >set classpath=<Project Directory>\bin;<Project Directory>\lib\*;
      
    • 通过CLI执行testng.xml如下:

      Project_Directory>java org.testng.TestNG testng.xml
      
    • 成功执行后,在项目目录中创建一个新的文本文档并添加以下代码:

      java -cp bin;lib/* org.testng.TestNG testng.xml
      
    • 将文件另存为 run.bat

    • 执行 Windows 批处理 文件 run.bat 并验证它是否按预期执行 Test Suite

    更新

    根据您的问题和后续评论,

    • 当您使用 TestNG 和/或 Maven 时,这些框架/构建工具会将所有相关的 jars 保存在各自的位置。但是当您打算手动配置 buildpath 时,您必须手动创建 lib 目录并保留相关 jars 的副本。

    • 也许您不需要手动创建 bin 目录,因为在成功编译您的 Java 程序后,您的程序将自动创建 bin 并在执行之前保留class文件。

    【讨论】:

    • 感谢您的帮助。我会一步一步执行。你能检查一下通常包含 .class 文件的 Bin 文件夹吗?在我的情况下 bin 文件夹不存在,所以我正在调用目标文件夹。
    • @IshitaShah 更新了我的答案,如果能回答您的问题,请告诉我。
    • 我可以通过调用 pom.xml 来执行测试套件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 2016-07-18
    • 1970-01-01
    • 2012-07-01
    • 1970-01-01
    相关资源
    最近更新 更多