0

我有两节课

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>

执行测试后,我的输出是
In method1 method of ClassA
In method2 method of ClassA
In method3 method of ClassB
In method1 method of ClassA
In method2 method of ClassA

method1()method2()在之后再次执行method3()

预期输出:
在 ClassA
的方法 1 中 在 ClassA 的
方法 2 中 在 ClassB的方法 3 中

4

1 回答 1

3

ClassB这是由于继承method1method2从的预期行为ClassA

要获得您想要的行为,您应该只执行ClassBClassB不作为ClassA.

可能的解决方案:

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

或者:

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

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

希望这可以帮助!

于 2013-09-23T17:02:02.927 回答