@BeforeTestを使用してコードを取得しようとしています...すべてのテストの前に1回実行します。
これは私のコードです:
public class TestBase {
@BeforeTest
public void before() {
System.out.println("BeforeTest");
}
}
public class TestClass extends TestBase{
@Test
public void test1(){}
@Test
public void test2(){}
}
「BeforeTest」は1回だけ印刷され、2回は印刷されません。何が悪いのですか?
@BeforeTestではなく、@ BeforeMethodを使用してください。
@BeforeTestの意味は ドキュメント で説明されています。
「BeforeTest」は1回だけ印刷され、2回は印刷されません。何が悪いのですか?
***ごめんなさい。私はあなたが@BeforeTestと書かれていることに気づいていませんが、あなたの例では@BeforeTestは@BeforeClassとほぼ同じであり、テストクラスがもうないときは@BeforeClassを使う方が良いです。
@BeforeClass」は、テストメソッドと同じクラスで宣言する必要があります。
//Example
package test;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class Tests {
private String bClass;
private String bMethod1;
private String bMethod2;
@BeforeClass
public void beforeClass() {
bClass = "BeforeClass was executed once for this class";
}
@BeforeMethod
public void beforeMetodTest1() {
bMethod1 = "It's before method for test1";
}
@Test
public void test1() {
System.out.println(bClass);
System.out.println(bMethod1);
}
@BeforeMethod
public void beforeMethodTest2() {
bMethod2 = "It's before method for test2";
}
@Test
public void test2() {
System.out.println(bClass);
System.out.println(bMethod2);
}
}
@BeforeClassは、このクラスのすべてのテストメソッドの前に1回実行されます。 @BeforeMethodはテストメソッドの前に実行され、その後に書き込まれます。
@BeforeClassは、@ BeforeMethodとは異なり、テストクラスに1つだけ存在する可能性があります(@BeforeClassの場合は、順番に実行されますが、テストの正しい構成ではありません)。
追伸私の英語でごめんなさい:)
documentation によると、@ BeforeTestで注釈されたメソッドは、タグ内のクラスに属する@Testメソッドが実行される前に実行されます。
私の経験から:
簡単な例を設定してこれをテストできます。
@beforeTestを使用する場合、そのメソッドはすべての<test>
の最初に1回実行されます(テストスーツのxmlファイルで指定します)テストにそのクラスが含まれている場合
すべての@befortests すべてのクラス内<test>
内は、そのテストの開始時に実行されます