Итак, у меня есть несколько тестов, которые успешно выполняются, если я запускаю его непосредственно как тест TestNG или если я запускаю файл testng.xml, который содержит тест.Но в настоящее время я пытаюсь вызвать метод Run TestNG, когда делаю запрос к своему сервлету Java.Я использую собственный репортер, чтобы записать результаты в файл json и отправить их обратно в ответ.
Однако всякий раз, когда я отправляю запрос сервлету, возвращаемые результаты сообщают мне, что всеиз моих тестов пропускаются.Почему мои тесты успешно выполняются при прямом доступе и просто пропускаются при вызове TestNG.run ()?
Вот мой testng.xml:
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="MyTestSuite">
<listeners>
<listener class-name="util.Listener"></listener>
<listener class-name="util.JsonReporter"></listener>
</listeners>
<test name="TestOne">
<classes>
<class name="testngs.MyTest"></class>
</classes>
</test>
</suite>
И короткий фиктивный тест:
package testngs;
import java.io.File;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.Assert;
import org.testng.annotations.AfterSuite;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.Test;
import pages.MyPage;
public class MyTest {
public static MyPage myPage;
public static WebDriver driver;
@BeforeSuite
public void setUpDriverAndPage() {
File file = new File("src/main/resources/chromedriver.exe");
System.setProperty("webdriver.chrome.driver", file.getAbsolutePath());
driver = new ChromeDriver();
myPage = new ManageBatchPage(driver);
driver.get("https://www.google.com");
}
@Test
public void createBatch() throws InterruptedException {
// filler code
Assert.assertEquals("hello", "hello");
}
@AfterSuite
public void cleanup() {
driver.quit();
}
}
И мой код сервлета:
if (uri.equals("/TestProject/getTests.do")) {
TestNG runner = new TestNG();
List<String> suiteFiles = new ArrayList<String>();
suiteFiles.add(/*path to my xml*/);
runner.setTestSuites(suiteFiles);
runner.run();
// read results from json file
JsonArray testResults = ResultParser.parseJson();
response.setContentType("application/json");
response.getWriter().print(testResults);
}