【问题标题】:Testng dealing with test inheritanceTestng 处理测试继承
【发布时间】:2011-05-29 14:11:41
【问题描述】:

我在一个项目中有 (Test-A) 完整注释的 testng 测试。注意:此测试运行成功。然后我在另一个扩展 (Test-A) 的项目中进行了另一个 testng 测试 (Test-B)。这个新的 (Test-B) 没有任何注释,因为它扩展了一个类。我的期望是,当你运行这个测试(Test-B)时,它应该运行超类中的测试用例以及其中定义的测试用例,这是面向对象的方式。问题是 testng 甚至不将其识别为测试,因为其中没有注释。我猜testng注解处理不考虑超类的注解??

【问题讨论】:

  • 我刚刚注意到,在超类中运行所有测试所需要做的就是在子类中添加一个带注释的测试,该测试调用超类中的一个测试用例。这会导致超类中的所有测试用例运行。奇怪吗?
  • 另一个更新。子类中的任何测试都足以触发超类中的所有测试运行。它不一定是调用超类测试的测试。
  • 您应该提交自己问题的答案。否则它是“未回答的”并且浪费那些想要回答未回答问题的人的时间。

标签: java eclipse selenium testng


【解决方案1】:

这可能是由于有问题的测试运行环境和设置(可能需要更多挖掘),但我能够通过添加 @ 987654321@子类本身的注解:

public abstract class A {

    @Test
    public void aTest() {

    }
}

@Test
public class B extends A {

}

【讨论】:

    【解决方案2】:

    (注意,这里使用普通的旧 JUnit 4,而不是 TestNG)

    如果父类在同一个项目中,Eclipse 确实会查找 @Test 注释的类层次结构。以下示例对我有用:

    public class A {
        @Test public void a() {
    
        }
    }
    
    public class B extends A {
    
    }
    

    当将B 作为 JUnit 测试运行时,它会执行 a() 并通过。

    然后我创建了两个 Eclipse 项目,Test A 和 Test B。我将项目 B 链接到项目 A 并像你一样重复上述步骤,在项目 A 中使用类 A 等。现在,将类 B 作为单元测试运行说“没有找到 JUnit 测试。”然后,在 B 类中添加@Test 即可解决问题。

    所以,我们可以推断 Eclipse 在寻找测试用例时并没有离开当前项目的边界。我认为您在班级中添加单个 @Test 的解决方法是合理的,尽管我不确定您为什么要这样做。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多