3

テストメソッドを順番に実行したい。私は、preserve-order を true に設定して testng.xml のクラスを使用しました。

<test name="group-test" preserve-order="true" >
    <classes>
        <class name="com.dependency.ClassA">
            <methods>
                <include name="create"/>
                <include name="enter"/>
                <include name="delete"/>
            </methods>
        </class>
    </classes>
</test>

そして私のテストクラスは

public class ClassA {


@Test()
public void Create() throws Exception
{
    System.out.println("in method create");

}   
@Test(dependsOnMethods= "Create")
public void Enter() throws Exception
{
    System.out.println("in method Enter");

}
@Test()
public void delete() throws Exception
{
    System.out.println("in method delete");

}

テストを実行した後、私の出力は
メソッドcreate、
メソッドdelete、
メソッドenterにあります

しかし、私が望むのは、最初に「作成」、次に「入力」、「削除」メソッドを実行することです。ここで、delete は独立したテスト メソッドです。 Cedric Beustが、依存関係を使用するか、testng.xmlにテストメソッドを明示的に含めることができると述べているGoogleグループの質問

を読みました。なぜこれが施行されるのか理解できませんか?独立したテスト メソッドと依存するテスト メソッドを任意の順序で一緒に実行したい場合はどうすればよいですか? 独立したメソッドが最初に実行され、次に依存するメソッドが実行されることを確認しました。


理想的には、依存関係は順序を維持するためではなく、前のメソッドが失敗した場合にテストをスキップするためのものであるべきです。TestNG が持っている強制の種類は、多くの問題を引き起こしています!

4

1 に答える 1

1

私はtestngの同じ主要な(そして私は明白に言わなければならない)欠陥に苦しんでいます。これまでに見つけた最善の解決策は、優先順位を使用することです。EG @Test(priority = 10)、次に次のテスト @Test(priority = 20) など。これまでに見つけたドキュメントとインターネット検索では、すべて @Test(priority = 1)、次に @Test(priority = 2)、しかし、その後、テストを途中で追加するたびにすべてのテストの番号を付け直さなければならないという、将来の明らかなメンテナンスの問題に遭遇します...したがって、この10、20などのソリューションは、少なくとも許容されるため、はるかに優れていますtest1 と test2 の間に @Test(priority = 11)、12 などを追加します。それは機能します、私は確認しました。幸運なことに、testng は 1、2、3 を強制しません。そうしないと、本当に困ったことになります。ああ、ところで、グループとメソッドの依存関係がある場合 (必要でない限り、すべてのテストで使用しないでください! ) @Test(priority = 10, groups = "login")、@Test(priority = 20, groups = "login")などのように見えます。また、すでにご存知のようですが、疑問に思われる方もいらっしゃると思いますが、テスト実行の順序を設定するために依存関係が使用されている場合、1 つが失敗すると、その後のすべてのテストがスキップされることを思い出してください。これは、まったく望んでいることではありません。とにかく、少なくともより良い解決策が現れるまで、これがあなたの行き詰まりを解消するのに役立つことを願っています. 幸運を!少なくともより良い解決策が現れるまで。幸運を!少なくともより良い解決策が現れるまで。幸運を!

于 2013-08-29T16:44:14.183 に答える