тест пропускается при запуске через командный файл, но выполняется в eclipse ide - PullRequest
0 голосов
/ 01 мая 2019

Тесты пропускаются при запуске через командный файл в командной строке, но эти тесты выполняются в eclipse ide

Я пишу код Java для тестирования API с использованием среды RestAssured и хочу выполнить сценарий через командный файл в командной строке, но в настоящее время мои тесты пропускаются в командной строке, но выполняются должным образом в eclipse ide

set classpath=C:\Users\Daffolap-624\workspace\WapandaParallel1\bin;C:\Users\Daffolap-624\workspace\WapandaParallel1\lib\*;C:\Users\Daffolap-624\workspace\WapandaParallel1\lib\Rest-Assured_jar_files\rest-assured-3.3.0.jar;C:\Users\Daffolap-624\workspace\WapandaParallel1\lib\Rest-Assured_jar_files\groovy-2.4.6;C:\Users\Daffolap-624\workspace\WapandaParallel1\lib\Rest-Assured_jar_files\rest-assured-3.3.0.jar;C:\Users\Daffolap-624\workspace\WapandaParallel1\lib\Rest-Assured_jar_files\groovy-json-2.4.6;C:\Users\Daffolap-624\workspace\WapandaParallel1\lib\Rest-Assured_jar_files\groovy-xml-2.4.6;C:\Users\Daffolap-624\workspace\WapandaParallel1\lib\Rest-Assured_jar_files\groovy-all-2.4.16.jar
java org.testng.TestNG -log 10 C:\Users\Daffolap-624\workspace\WapandaParallel1\testng.xml
pause



<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
  <test thread-count="5" name="Test">
    <classes>
      <class name="API_Automation.ApiOperationsTest"/>
    </classes>
  </test> 
</suite> 

так что это был мой командный файл и файл testng.xml Отредактировав файл XML для получения пропущенного описания теста, я узнал, что мой тест выдает исключение при выполнении кода через командную строку следующие исключения -

[TestNG] RUNNING: Suite: "Test" containing "1" Tests (config: C:\Users\Daffolap-624\workspace\WapandaParallel1\testng.xml)
[TestNG] INVOKING CONFIGURATION: "Test" - @BeforeTest API_Automation.ApiOperationsTest.StartDriver()
[TestNG] FAILED CONFIGURATION: "Test" - @BeforeTest API_Automation.ApiOperationsTest.StartDriver() finished in 1245 ms
[TestNG] java.lang.NoClassDefFoundError: org/apache/http/client/HttpClient
[TestNG]        at io.restassured.config.HttpClientConfig.defaultHttpClientFactory(HttpClientConfig.java:264)
[TestNG]        at io.restassured.config.HttpClientConfig.<init>(HttpClientConfig.java:76)
[TestNG]        at io.restassured.config.RestAssuredConfig.<init>(RestAssuredConfig.java:41)
[TestNG]        at io.restassured.RestAssured.<clinit>(RestAssured.java:420)
[TestNG]        at API_Automation.ApiOperationsTest.StartDriver(ApiOperationsTest.java:36)
[TestNG]        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[TestNG]        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
[TestNG]        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
[TestNG]        at java.lang.reflect.Method.invoke(Unknown Source)
[TestNG]        at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:108)
[TestNG]        at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:523)
[TestNG]        at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:224)
[TestNG]        at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:146)
[TestNG]        at org.testng.TestRunner.beforeRun(TestRunner.java:626)
[TestNG]        at org.testng.TestRunner.run(TestRunner.java:594)
[TestNG]        at org.testng.SuiteRunner.runTest(SuiteRunner.java:380)
[TestNG]        at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:375)
[TestNG]        at org.testng.SuiteRunner.privateRun(SuiteRunner.java:340)
[TestNG]        at org.testng.SuiteRunner.run(SuiteRunner.java:289)
[TestNG]        at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
[TestNG]        at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
[TestNG]        at org.testng.TestNG.runSuitesSequentially(TestNG.java:1301)
[TestNG]        at org.testng.TestNG.runSuitesLocally(TestNG.java:1226)
[TestNG]        at org.testng.TestNG.runSuites(TestNG.java:1144)
[TestNG]        at org.testng.TestNG.run(TestNG.java:1115)
[TestNG]        at org.testng.TestNG.privateMain(TestNG.java:1442)
[TestNG]        at org.testng.TestNG.main(TestNG.java:1411)
[TestNG] Caused by: java.lang.ClassNotFoundException: org.apache.http.client.HttpClient
[TestNG]        at java.net.URLClassLoader.findClass(Unknown Source)
[TestNG]        at java.lang.ClassLoader.loadClass(Unknown Source)
[TestNG]        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
[TestNG]        at java.lang.ClassLoader.loadClass(Unknown Source)
[TestNG]        ... 27 more
[TestNG] SKIPPED: "Test" - API_Automation.ApiOperationsTest.CompleteFlow() finished in 0 ms

Во-первых, я уверен, что программа не может извлечь файлы JAR во время выполнения из папки lib. И если я упомяну путь к конкретному файлу JAR в Classpath, то исключение этого файла разрешается.

Почему Программа не может получить файлы JAR во время выполнения в папке lib. Почему она обращается только к тем файлам JAR, прямой путь которых указан в Classpath?

1 Ответ

0 голосов
/ 03 мая 2019

Путь к классу, который задает ваш пакетный файл, вероятно, не содержит библиотеку, из которой должен быть взят HttpClient (класс, который не найден), в то время как конфигурация проекта в IDE имеет эту библиотеку в своем пути к классампоэтому он работает в среде IDE.

Чтобы убедиться, что это так, добавьте в свой тест оператор, чтобы распечатать текущий путь к классу, и посмотрите, будет ли он таким же при запуске из среды IDE: System.out.println(System.getProperty("java.class.path"))

В этом случае вам нужно изменить настройку пути к классам в вашем пакетном файле, добавив в него путь к библиотеке с отсутствующими классами.

...