我在一个项目中有 (Test-A) 完整注释的 testng 测试。注意:此测试运行成功。然后,我在扩展(Test-A) 的不同项目中进行了另一个testng 测试(Test-B)。这个新的 (Test-B) 没有任何注释,因为它扩展了一个有注释的类。我的期望是,当您运行此测试(Test-B) 时,它应该运行父类(super class)中的测试用例以及其中定义的测试用例,这是面向对象的方式。问题是 testng 甚至不将其识别为测试,因为其中没有注释。我猜 testng 注释处理不考虑父类(super class)的注释??
最佳答案
(注意,这里使用普通的旧 JUnit 4,而不是 TestNG)
如果父类在同一个项目中,Eclipse 确实会在类层次结构中查找 @Test 注释。以下示例对我有用:
public class A {
@Test public void a() {
}
}
public class B extends A {
}
当 B
作为 JUnit 测试运行时,它会执行 a()
并通过。
然后我创建了两个 Eclipse 项目,测试 A 和测试 B。我将项目 B 链接到项目 A 并像您一样重复上述步骤,在项目 A 中使用类 A 等。现在,将类 B 作为单元测试运行说“未找到 JUnit 测试”。然后,在 B 类中添加一个 @Test
即可解决问题。
因此,我们可以推断,Eclipse在查找测试用例时并没有超出当前项目的范围。我认为您将单个 @Test
添加到您的类(class)的解决方法是合理的,尽管我不确定您为什么要这样做。
关于java - 处理测试继承的Testng,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4512528/