TestNG
的组名通常是硬编码的,可能会降低软件的质量。我想知道如何防止硬编码组名称。
在 TestCase.java 中,是的,我可以使用静态最终字符串,就像 @JavaSoftwareTester 在 this post 中询问的那样.
public class TestType {
private static final String GROUP_A = "GroupA";
private static final String GROUP_B = "GroupB"
/**
* Avoid instantiation
*/
private TestType() {
}
}
但是,似乎这个最终字符串不能在 testNG.xml 中使用,例如:
<groups>
<run>
<!-- I don't want hard coded -->
<include name = "GroupA" />
<!-- but this is incorrect -->
<include name = TestType.GROUP_A />
</run>
</groups>
摘要:我想防止硬编码组名称,但我找不到合适的机制。请说明如何解决此问题。
最佳答案
您可以使用 Beanshell
来执行此操作TestNG 提供的支持。
以下是您的操作方法。
- 首先通过添加 here 中的内容来添加对 beanshell 库的依赖项(这是必需的,因为 TestNG 仅将 beanshell 库作为可选依赖项引入)
- 然后,您定义一个 beanshell(如下所示)作为您的方法选择器
<method-selector>
<script language="beanshell">
<![CDATA[
import org.rationale.emotions.stackoverflow.qn45272885.TestClass;
groups.containsKey(TestClass.GROUP_B);
]]>
</method-selector>
不要忘记在你的类中将常量公开 TestType
。
要了解有关 Beanshell 与 TestNG 集成的更多信息,您可以引用我的博客文章 here还有官方 TestNG 文档 here
关于java - 防止 TestNG 硬编码组名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45272885/