8

JUnit を使用して void メソッドをテストする方法。

void add(int a, int b) {
 int c= a + b;
}

Java で Junit を使用して上記の方法をテストする方法。

4

3 に答える 3

15

メソッドに副作用がある場合は、JUnit テストで確認できます。

あなたの例では、メソッドには副作用がないため、テストするものは何もありません

それでもテストしたい場合は、リフレクションを使用してテストできますが、それは良い習慣ではないと思います。

JUnit FAQ関連セクションを確認できます。

何も返さないメソッドをテストするにはどうすればよいですか?

多くの場合、メソッドが値を返さない場合、何らかの副作用があります。実際には、値を返さず、かつ副作用がない場合、何もしていません。

副作用が実際に期待どおりに発生したことを確認する方法があるかもしれません。たとえば、クラスのadd()メソッドを考えてみましょう。Collection副作用が発生した (つまり、オブジェクトが追加された) ことを確認する方法があります。サイズを確認し、それが期待どおりであることを確認できます。

@Test
public void testCollectionAdd() {
    Collection collection = new ArrayList();
    assertEquals(0, collection.size());
    collection.add("itemA");
    assertEquals(1, collection.size());
    collection.add("itemB");
    assertEquals(2, collection.size());
}

別のアプローチは、MockObjectsを利用することです。

関連する問題は、テスト用に設計することです。たとえば、ファイルに出力するメソッドがある場合は、ファイル名やFileWriter. 代わりに、 a を渡しWriterます。StringWriterそうすれば、テスト目的で出力をキャプチャするために を渡すことができます。writeToFileNamed(String filename)次に、作成をカプセル化するメソッド (例: ) を追加できますFileWriter

于 2013-05-21T06:39:58.453 に答える
0

それが「大きな」メソッドである場合は、いくつかのメソッドの抽出リファクタリングを抽出して、テスト可能ないくつかのメソッドをテストすることができます。

または、whoAmI が言ったように、データベースの変更、ファイルの変更などの副作用をテストできます。

于 2013-05-21T06:48:37.963 に答える
-4

あなたのクラス名がAddition

@Test
public void testAdd(){
    Addition a = new Addition();
    assertEquals(a.add(2,3),5);
}

JUnit の FAQから:

多くの場合、メソッドが値を返さない場合、何らかの副作用があります。実際には、値を返さず、かつ副作用がない場合、何もしていません。

于 2013-05-21T06:52:14.703 に答える