0

私のwebdriverスクリプトには、3つのメソッドがあります

setup, test and tearDown

Junit規約に従います。

メソッドでは、testこのようなアサートはほとんどありません

@Test
public void testStudentHome() throws Exception {
    String classCode = "I6OWW";
    Utilities.studentSignin(driver, baseUrl);
    assertEquals(true, sth.openNotification());
    assertEquals("My Scores", sth.myScores(true));
}

sth、テストを実行していて、setupメソッドで作成した PageObject です。

main次のようなメソッドからこれら 3 つのメソッドをすべて呼び出しています。

public static void main(String[] args) {
        StudentHomeTest sht = new StudentHomeTest();
        try {
            sht.setup();
            sht.testStudentHome();
            sht.tearDown();
        } catch (Exception ex) {
            Logger.getLogger(StudentHomeTest.class.getName()).log(Level.SEVERE, null, ex);
            sht.tearDown();
        }
    }

テストの実行中にアサーションが失敗した場合、テスト メソッドは例外をスローし (これは私が期待することです)、mainメソッドはメソッドを呼び出す必要がありますtearDown。しかし、これは起こりません。ブラウザ ウィンドウは引き続きそこにとどまります。テストの実行に netbeans ide を使用しています。

4

2 に答える 2

2

Junit規約に従う

jUnit の規則に従えば、ティアダウン メソッドは @After メソッドに属していることがわかります。このメソッドは常にテスト後に実行されるからです。

@AfterjUnit アノテーションを使用して新しいメソッドを作成します。

@After
public void tearDown() {
  sht.tearDown();
}

編集

assertEqualsjUnitの古典的な問題に直面していると思います。

この回答から盗まれました...:

JUnit は .equals() メソッドを呼び出して、メソッド assertEquals(Object o1, Object o2) で等しいかどうかを判断します。

したがって、assertEquals(string1, string2) を使用することは間違いなく安全です。(文字列はオブジェクトなので)

--これらの呼び出しで使用する代わりに、
代わりに使用してください。assertEqualsassertTrue()

assertTrue(sth.openNotification());
assertTrue("My Scores".equals(sth.myScores(true)));
于 2013-10-17T17:15:53.960 に答える