TestNG sınaması için gerekli olan dosyaları içeren bir .Jar dosyası yaşıyorum. Bu Jar dosyası içinde belirli bir xml dosyasını çalıştırmak istiyorum. TestNG testini .Jar dosyasına yönlendirmek mümkün ise bunu nasıl yapabilirim.TestNG sınamaları nasıl çalıştırılır Kavanoza işaretlendi
cevap
Testng.xml dosyasını okuyabilir ve programlamayı jar'ı çıkarmadan çalıştırabilirsiniz.
Önce xml'yi okuyup onu ayrıştırmanız gerekir. Burada xml dosya formatımla eşleşecek bazı fasulye sınıfları oluşturdum. Bu benim fasulye sınıftır, bunu size ihtiyacı
@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;
}
}
ile eşleşen sınıfların set kendi oluşturmak ve bu okuduğunuz nasıl ve ayrıştırmak:
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);
}
Sonunda çalıştırmak paketi:
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 yalnızca bir zip dosyasıdır.
Bunu, jar xf testfile.jar
kullanarak ayıklayabilirsiniz ve istediğiniz dosyaya erişebilirsiniz.
Bu yanıt ayrıca size yardımcı olabilir.
Sen xml çalıştırmak için -xmlpathinjar suit/GroupBased_Tests.xml seçeneğini kullanabilirsiniz.
Eğer yardımcı olursa, maven here ile ilgili adımlara başvurabilirsiniz.
Diğer seçenekleri kullanabilmek için, lütfen bkz. Test dokümantasyonu here.
Komut satırı yerine programlı çalışabilir miyim? – gihan
Sunu programlı olarak yürütmek ister misiniz? –
yes.i maven build.let adlı bir jar dosyası var benim jar dosya adı 'myproject-1.0-SNAPSHOT' bu jar 'src/target' klasörünün tüm kaynakları içerir.so testngTestfile yürütmek istiyorum Bu oluşturulan jar dosyası içinde bulunan .xml 'programmatically.Eg:user bir arg olarak dosya adı ile jar vermek ve bu test programmatically.'executeTest (.jarfilelocation, fileNametobeExecuted)' .inside bu yöntemi test yürütmek çalıştırılacak. – gihan
- 1. intellij düşüncesinde angularJS testleri nasıl çalıştırılır 11.1.3?
- 2. Bir kavanoza açıklama satırları
- 3. Salatalıklı TestNG Dinleyicileri nasıl kullanılır?
- 4. Çalışma zamanı bilgilerine dayanarak sınamaları nasıl atlamalı?
- 5. Bir kavanoza ant junit batchtest
- 6. UILocalNotification sözlükte belirsiz olarak işaretlendi
- 7. TestNG Gruplara kestirmeden önce
- 8. Jbehave'ı testNG ile entegre etmek mümkün mü?
- 9. TestNG, çalışma modu paralel = "method"
- 10. Visual Studio Birim sınamaları ve kaynak denetimi
- 11. Bir Fatlu Kavanoza Uygulama ile Gömme Gömme
- 12. ZF2 bir onay kutusu işaretlendi seçeneği işaretleyin
- 13. SWT CheckBox Düğmesi işaretlendi/işaretini kaldırın durumu
- 14. node-express app.get() webstorm'da çözümlenmemiş olarak işaretlendi
- 15. Çekirdek jQuery kitaplıkları için birim sınamaları
- 16. TestNG beklenenExceptionsMessageRegExp ve harici iletileri
- 17. TestNG farklı sınıftan bağımsız değişkenler
- 18. sbt-assembly: dependanc kavanozun ana kavanoza nasıl bağlanır?
- 19. Visual Studio 2010'da birim sınamaları gerçekleştirilmeden önce nasıl yapılamaz
- 20. NUnit bir başarısızlık durumunda bir sınıfta sınamaları durdurmayı nasıl gerçekleştirir
- 21. Kayıt denetleyicisini geçersiz kıldığınızda denetleyici sınamaları nasıl yazılır?
- 22. İmzalı tamsayı aralıkları işaretsiz olarak işaretlendi
- 23. microsoft navision 2009, onay kutusu işaretlendi
- 24. ImageView neden hata olarak işaretlendi? hata olarak
- 25. heroku phantomjs nasıl çalıştırılır?
- 26. Qt uygulaması nasıl çalıştırılır?
- 27. Komisyondan görevler nasıl çalıştırılır?
- 28. Windows'ta uygulamaları nasıl çalıştırılır?
- 29. schema.rb nasıl çalıştırılır?
- 30. Uygulama, savaştan nasıl çalıştırılır?
Thanks.it beklendiği gibi çalışıyor. – gihan