java - 防止 TestNG 硬编码组名

标签 java testng

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/

相关文章:

java - 从其他项目注册EntityManager

java - 初始化主 GUI 时可见的 JProgressBar

java - 数组列表中的对象不断替换?

java - 问题 : I want to delete directory from my maven project when i am running mvn eclipse:clean

java - Selenium 测试在单独运行时通过,在套件中运行时挂起,并且在启用日志记录或远程运行时惊人地通过套件

java - 递归插入时是否会重建二叉搜索树?

java - 我如何从 aws cloudwatch 的特定指标中获取数据?

java - testng 保留测试中的顺序

java - 如何使用 TestNG 在循环中运行 @beforeclass @test 和 @Afterclass 案例

java - 如何强制在 Maven 测试目标期间运行的 testNG 测试超时?