Java @测试注释和继承
我有两节课Java @测试注释和继承,java,unit-testing,testng,Java,Unit Testing,Testng,我有两节课 public class ClassA { @Test public void method1() { System.out.println("In method1 method of ClassA"); } @Test public void method2() { System.out.println("In method2 method of ClassA"); } } publ
public class ClassA
{
@Test
public void method1()
{
System.out.println("In method1 method of ClassA");
}
@Test
public void method2()
{
System.out.println("In method2 method of ClassA");
}
}
public class ClassB extends ClassA
{
@Test
public void method3()
{
System.out.println("In method3 method of ClassB");
}
}
还有我的testng.xml
<test name="group-test" preserve-order="true" >
<classes>
<class name="com.ClassA">
<methods>
<include name="method1"/>
<include name="method2"/>
</methods>
</class>
<class name="com.ClassB">
<methods>
<include name="method3"/>
</methods>
</class>
</classes>
</test>
执行测试后,我的输出为在ClassA的方法1中
在ClassA的方法2中
在ClassB的方法3中
在ClassA的方法1中
在ClassA的方法2中
method1()
和method2()
在method3()之后再次执行
预期输出:
在ClassA的方法1中
在ClassA的方法2中
在ClassB的方法3中,这是预期的行为,因为ClassB
继承了method1
和method2
来自ClassA
要获得所需的行为,应仅执行ClassB
或使ClassB
不作为ClassA
的子级
可能的解决办法:
<test name="group-test" preserve-order="true" >
<classes>
<class name="com.ClassB">
<methods>
<include name="method3"/>
</methods>
</class>
</classes>
</test>
维护您在问题中提供的相同XML
希望这有帮助 这是预期的行为,因为ClassB
继承了method1
和method2
来自ClassA
要获得所需的行为,应仅执行ClassB
或使ClassB
不作为ClassA
的子级
可能的解决办法:
<test name="group-test" preserve-order="true" >
<classes>
<class name="com.ClassB">
<methods>
<include name="method3"/>
</methods>
</class>
</classes>
</test>
维护您在问题中提供的相同XML
希望这有帮助 你的问题是什么?为什么method1()
和method2()
在method3()
之后再次执行?如果我写
,那么method1()
和method2()
仍将执行为什么不只执行类B?你的问题是什么?为什么method1()
和method2()
在method3()
之后再次执行?如果我写
那么method1()
和method2()
仍将执行为什么不只执行类B?谢谢@idiazt,我明白了你的意思。但在一个场景中,我必须从类B调用method2(),而不是从类A调用method2()
,但testng完全忽略了它。我已经提到了@Test in class level也包括@idiazt,我明白了你的意思。但在一个场景中,我必须调用method2()来自ClassB不是来自ClassA
,但是testng完全忽略了它。我在类级别也提到了@Test