Mam plik .Jar, który zawiera pliki potrzebne do uruchomienia testu TestNG. Chcę uruchomić konkretny plik XML wewnątrz tego pliku Jar.My wymagania jest to, że możliwe jest wykonanie testu TestNG wskazującego na plik .Jar, jeśli tak, jak mogę to zrobić.Jak uruchomić testy TestNG wskazujące na słoik
Odpowiedz
Możesz przeczytać plik testng.xml, a także uruchamiać go programowo, nie wyodrębniając słoika.
Najpierw należy przeczytać xml i przeanalizować go. Oto niektóre klasy komponentów bean, które pasują do mojego formatu pliku xml. To moja klasa fasola, tworzyć własne zestaw klas, które odpowiadają z wymogu
@XmlRootElement(name = "suite")
public class Suite {
private String name;
private String verbose = "1";
private boolean parallel =false;
private List<Test> testCases = new ArrayList<Test>();
private List<Parameter> parameters = new ArrayList<Parameter>();
@XmlAttribute
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@XmlAttribute
public String getVerbose() {
return verbose;
}
public void setVerbose(String verbose) {
this.verbose = verbose;
}
@XmlAttribute
public boolean isParallel() {
return parallel;
}
public void setParallel(boolean parallel) {
this.parallel = parallel;
}
@XmlElement(name = "test")
public List<Test> getTestCases() {
return testCases;
}
public void setTestCases(List<Test> testCases) {
this.testCases = testCases;
}
@XmlElement(name = "parameter")
public List<Parameter> getParameters() {
return parameters;
}
public void setParameters(List<Parameter> parameters) {
this.parameters = parameters;
}
}
I to jest, jak czytać i analizować go:
public Suite getTestSuiteFromJar(String jarFilePath, String filename) {
File jarFile = new File(jarFilePath);
Suite suite = null;
try {
if (jarFile.isFile()) {
final JarFile jar = new JarFile(jarFile);
InputStream in = jar.getInputStream(new ZipEntry(filename));
suite = XmlUtil.parseSuite(in);
jar.close();
}
} catch (IOException | JAXBException | SAXException | ParserConfigurationException e) {
e.printStackTrace();
}
return suite;
}
public static Suite parseSuite(InputStream is) throws JAXBException, SAXException, ParserConfigurationException {
JAXBContext jaxbContext = JAXBContext.newInstance(Suite.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
return (Suite) jaxbUnmarshaller.unmarshal(is);
}
Wreszcie możemy uruchomić pakiet:
public static void runSuite(String jarFilePath, Suite s)
throws MalformedURLException, ClassNotFoundException {
//Don't confuse : XmlSuite here, is the standard testNg class. our bean class is Suite
XmlSuite suite = new XmlSuite();
suite.setName(s.getName());
for (Test t : s.getTestCases()) {
XmlTest test = new XmlTest(suite);
test.setName(t.getName());
List<XmlClass> classes = new ArrayList<XmlClass>();
for (TestClass tc : t.getClasses()) {
Class cls = loadClass(jarFilePath, tc.getName());
if (cls != null) {
XmlClass xClass = new XmlClass(cls, false);
classes.add(xClass);
test.setXmlClasses(classes);
}
}
}
List<XmlSuite> suites = new ArrayList<XmlSuite>();
suites.add(suite);
TestNG tng = new TestNG();
tng.setXmlSuites(suites);
tng.run();
}
public Class loadClass(String jarFilePath, String className) throws MalformedURLException,
ClassNotFoundException {
File jarFile = new File(jarFilePath);
if (jarFile.isFile()) {
URL url = jarFile.toURL();
URL[] urls = new URL[] { url };
ClassLoader cl = new URLClassLoader(urls);
return cl.loadClass(className);
} else {
return null;
}
}
jar to tylko plik zip.
Możesz uzyskać to wyodrębnione za pomocą jar xf testfile.jar
i uzyskać dostęp do żądanego pliku.
Ta odpowiedź również może pomóc.
Można użyć -xmlpathinjar apartamentów/option GroupBased_Tests.xml uruchomić xml.
Może odnosić się do czynności z maven here, jeśli to pomaga.
Aby uzyskać informacje o innych opcjach, skorzystaj z dokumentacji Testng here.
Czy mogę wykonywać programowo zamiast wiersza poleceń? – gihan
chcesz programowo uruchamiać jar? –
yes.i mam plik JAR, który wygenerowany z maven build.let mówi, że moja nazwa pliku JAR to 'myproject-1.0-SNAPSHOT' ten jar zawiera wszystkie moje zasoby folderu' src/target', więc chcę wykonać mój plik 'testngTestfile .xml', który znajduje się w tym wygenerowanym pliku jar.i chce to zrobić programowo.Eg: użytkownik poda słoik z nazwą pliku jako arg i wykona ten program programowo ".executeTest (.jarfilelocation, fileNametobeExecuted)' .wtedy ten test metody zostanie uruchomiony. – gihan
- 1. Jak zoptymalizować testy testng i selenów?
- 2. Jak uruchomić testy integracji?
- 3. Jak uruchomić testy angularJS w intellij idea 11.1.3?
- 4. Nagle nie można uruchomić testów TestNG z ant ([testng] Powodowanego przez: java.lang.ClassNotFoundException: com.beust.jcommander.ParameterException)
- 5. Cechy wskazujące na typ PHP
- 6. uruchomić testy UI xcode 7 na urządzeniu
- 7. Jak uruchomić testy Karma z kontenera dokowanego?
- 8. Jak mogę uruchomić testy Androida z sbt?
- 9. Jak uruchomić testy Jasmine w przeglądarce?
- 10. Jak uruchomić QUnit testy z wiersza poleceń?
- 11. Stworzyłem testy NUnit, teraz jak je uruchomić?
- 12. Jak uruchomić testy końca końcówki AngularJS na Jenkins?
- 13. Jak mogę szybciej uruchomić testy RoR?
- 14. Korzystając z Mavena, jak uruchomić określone testy?
- 15. Jak uruchomić wszystkie moje testy PHPUnit?
- 16. kiedy uruchomić testy Mockito występuje WrongTypeOfReturnValue wyjątkiem
- 17. Jak wyrejestrować słoik?
- 18. Jak osadzić słoik w HTML
- 19. Testy integracyjne na górnej półce, aby uruchomić usługę Windows # C#
- 20. uruchomić wszystkie testy jednostkowe zend framework2
- 21. testy karmy na chromie
- 22. Nie można uruchomić testy z XCTest
- 23. Czy możesz uruchomić testy PHPUnit ze skryptu?
- 24. Groovy Eclipse nie można uruchomić testy JUnit
- 25. Jak wykluczyć klasę z TestNG?
- 26. Jak uruchomić testy sekwencyjnie w Xcode 6 beta3
- 27. Jak uruchomić testy testowe Android/Robotium Instrumentation przeciwko wersji APK?
- 28. Jak mogę uruchomić testy wydajności więcej niż dziesięć razy?
- 29. Jak uruchomić testy Testowania Jasmine \ Karma przez proces budowania TFS
- 30. Jak określić, które testy uruchomić z "python nosetests setup.py"
Dzięki. Działa poprawnie zgodnie z oczekiwaniami. – gihan