@Test注释和继承

时间:2013-09-23 09:51:33

标签: 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");
    } 
}


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的method1方法中 在ClassA的method2方法中 在ClassB的method3方法中 在ClassA的method1方法中 在ClassA的method2方法中

method1()method2()method3()

之后再次执行

预期产量:
在ClassA的method1方法中 在ClassA的method2方法中 在ClassB的method3方法中

1 个答案:

答案 0 :(得分:3)

这是ClassBmethod1继承method2ClassA以来的预期行为。

要获得所需的行为,您应该只执行ClassB或将ClassB作为ClassA的孩子。

可能的解决方案:

<test name="group-test" preserve-order="true" >
     <classes>
        <class name="com.ClassB">
            <methods>
                <include name="method3"/>
            </methods>
            </class>    
    </classes>
</test>

OR:

public class ClassB
{
    @Test
    public void method3()
    {
       System.out.println("In method3 method of ClassB");
    }
}

维护您在问题中提供的相同XML。

希望这有帮助!