TestNG
的群组名称通常是硬编码的,可能会降低软件的质量。我想知道如何防止硬编码组名称。
在TestCase.java中,是的,我可以使用静态的最终字符串,就像this post中提到的@JavaSoftwareTester一样。
public class TestType {
private static final String GROUP_A = "GroupA";
private static final String GROUP_B = "GroupB"
/**
* Avoid instantiation
*/
private TestType() {
}
}
但是,似乎这个最终的String不能在testNG.xml中使用,如:
<groups>
<run>
<!-- I don't want hard coded -->
<include name = "GroupA" />
<!-- but this is incorrect -->
<include name = TestType.GROUP_A />
</run>
</groups>
总结:我想防止硬编码组名称,但我找不到合适的机制。请详细说明如何解决这个问题。
答案 0 :(得分:1)
您可以使用TestNG提供的Beanshell
支持来执行此操作。
以下是你如何去做。
<method-selector>
<script language="beanshell">
<![CDATA[
import org.rationale.emotions.stackoverflow.qn45272885.TestClass;
groups.containsKey(TestClass.GROUP_B);
]]>
</method-selector>
请勿忘记在课程TestType
中将常量公之于众。