![](/img/trans.png)
[英]How can my Maven project run both JUnit and TestNG without TestNG trying to run JUnit tests?
[英]How to run Junit / TestNG tests based on an external input?
我有一个Excel文件,用于存储测试用例名称/ ID。
现在,如果我的测试用例名称(在excel中)以'test'开头,我想执行我的Junit / TestNG测试之一。 如果我的测试用例名称(在excel中)以“ check”开头,则我想执行另一个Junit / TestNG测试。 同样,我想基于Excel中的Ids执行不同的测试。
我将如何做到这一点? 可以请一个例子举个例子,对我有很大的帮助。
谢谢,迈克
我认为您想要做的是根据您的Excel工作表动态构建测试。 这就是您可以以编程方式运行testng的方式。
您需要做的是从Excel中读取信息,创建XmlClass并根据方法的测试名称设置xmlclass的方法。 将xmlclass添加到XmlSuite。 因此,基本上,您是在运行时根据excel中的测试用例名称生成一个动态套件。
您正在寻找的是一种叫做反射的东西。 在xml中,您将具有要运行的类和方法的名称。 然后,在Java中,您将使用反射来获取类,并遍历方法以确定是否与您想要的匹配。 反射通常不是一种有效的处理方式,但出于测试目的,它可以执行您想要的操作。
一个例子是
for(Method method : this.getClass().getMethods()){
{
if(method.getName().equals(name)){
method.invoke();
}
}
有关详细信息,请阅读http://docs.oracle.com/javase/tutorial/reflect/class/index.html 。
我使用testNG做过类似的事情。 我的要求是运行用户将从测试用例列表中选择的测试用例。 我使用的是Jenkins而不是excel表,以便用户从列表中选择测试用例。 逻辑也可能对您有用。 就这个:
我没有弄清楚要运行哪种方法,而是为所有测试用例指定了唯一的测试组名称。 该组名称应与excel工作表中的名称相同。 唯一需要的逻辑是创建testng.xml以使用输入组名称运行测试。 这可以使用testNG对象或通过使用dom4j或类似的东西创建tesNG.xml来完成。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.