1

コードのテストをいくつか作成する必要がある課題があります。Junit テストを使用する必要があるため、メソッドのポジティブ テストとネガティブ テストを行うことにしました。

たとえば、ArrayList から名前を取得するための 1 つのテストには、肯定的なテストと否定的なテストがあります。

肯定的:

public void testGetNamePositive() { 
    Entry entry1 = new Entry("Susan Holmes", "122 Harringdale", "Workington", "CA14 2GH"); 
    assertEquals("Susan Holmes",entry1.getName()); 
} 

ネガティブ:

public void testGetNameNegative() { 
    Entry entry1 = new Entry("Susan Holmes", "122 Harringdale", "Workington", "CA14 2GH"); 
    assertFalse( entry1.getName() == "Alison"); 
} 

私が確信していないテストはこれです:

public void testEntryCreated() {
    Entry entry1 = new Entry("Susan Holmes", "122 Harringdale", "Workington", "CA14 2GH");
    assertNotNull(entry1);
}

これに対する否定的なテストはありますか?

4

3 に答える 3

4

エントリ クラスの public コンストラクターには、いくつかの引数の検証が必要です。たとえば、name を null にすることはできません。したがって、このような否定的なテストを書くことができます

@Test(expected = NullPointerException.class)
public void testCreateEntryWithNameIsNullThrowsNPE() {
    Entry entry1 = new Entry(null, "122 Harringdale", "Workington",
            "CA14 2GH");
}

JUnit 4を使用したことに注意してください

于 2013-03-21T10:25:57.503 に答える
3

私は、testEntryCreatedテストはすでに必要ではないと主張します。ここでは、クラスの動作をテストするのではなく、オブジェクトを適切に作成する JVM の機能をテストしています。代わりに、オブジェクトの動作をテストすることに集中してください。

于 2013-03-21T10:26:18.340 に答える
1

ここで何をテストしようとしているのかよくわかりません。現在テストしているのは、name 変数が正しく設定されていることだけです。

単体テストを行う場合、負の入力と正の入力の両方を使用して、特定のメソッドを分離して (テスト可能な最小単位で) テストしたいとします。

ネガティブテストの例は次のとおりです。

public void testGetNameNegative() 

{ 
    Entry entry1 = new Entry("Susan Holmes", "122 Harringdale", "Workington", "CA14 2GH"); 
    assertFalse( entry1.getName() == "Alison"); 
} 

これは否定的なテスト ケースではありません。ネガティブをテストしたいのは、たとえば、名前に数字を含めたり、空の文字列を使用したりできないことです。

public void testGetNameNegative() 

{ 
    Entry entry1 = new Entry("123", "122 Harringdale", "Workington", "CA14 2GH"); 
    //Expect some behaviour
    Entry entry1 = new Entry("", "122 Harringdale", "Workington", "CA14 2GH"); 
    //Expect some other behavior
} 

ここで期待するのは、コンストラクターを「テスト」しているため、おそらくある種の例外です。これがメソッドの場合、例外ではなく何らかの戻り値が期待できます

于 2013-03-21T10:29:01.477 に答える