42

私は使用しますGHUnit。プライベート メソッドを単体テストしたいのですが、テスト方法がわかりません。プライベート メソッドをテストする理由、またはテストしない理由について、多くの回答が見つかりました。しかし、それらをテストする方法が見つかりませんでした。

プライベートをテストする必要があるかどうかについては議論したくありませんが、テスト方法に焦点を当てます。

プライベートメソッドをテストする方法の例を教えてもらえますか?

4

4 に答える 4

7

少し遅れましたが、TDD 電車に乗りました。

プライベート メソッドはテストしないでください。パブリック メソッドをサポートするためにプライベート メソッドを作成するため、パブリック メソッドをテストすると、それらをサポートするプライベート メソッドが間接的にテストされます。

「プライベート メソッドはテストすべきではない」という原則は、「プライベート メソッドをテストする必要がある場合は、おそらくそれらのメソッドを別のクラスに移動する必要があることを意味する」という原則によってサポートされているため、公開することができます。

于 2014-05-02T10:45:11.847 に答える
4

@Lord Zsoltに同意

また、次の点にご注意ください ( Test-Driven iOS Development ISBN-10: 0-321-77418-3、ISBN-13: 978-0-321-77418-7 より)

プライベート メソッドのテスト

「プライベート メソッドをテストする必要がありますか?」とよく聞かれます。または関連する質問「プライベート メソッドをテストするにはどうすればよいですか?」2 番目の質問をする人は、1 番目の質問に対する答えが「はい」であると想定しており、現在、クラスのプライベート インターフェイスをテスト スイートで公開する方法を探しています。

私の答えは、微妙な事実の観察に依存しています。つまり、あなたはすでにプライベート メソッドをテストしています。テスト駆動型開発で一般的な red-green-refactor アプローチに従うことで、オブジェクトが必要とする作業を行うようにオブジェクトのパブリック API を設計しました。テストによって指定されたその作業と、何も壊れていないことを保証するテストの継続的な実行により、適切と思われるようにクラスの内部配管を自由に編成できます。プライベート メソッドは既にテスト済みです。これは、既にテスト済みの動作をリファクタリングしているだけだからです。

パブリック メソッドの実装をクリーンアップする機会がある場合にのみプライベート メソッドを作成するため、プライベート メソッドがテストされていない、またはテストが不完全な状況に陥ってはなりません。これにより、private メソッドはクラスの public 動作をサポートするためだけに存在し、確実に public メソッドから呼び出されるため、テスト中に呼び出す必要があることが保証されます。

于 2015-08-31T06:13:40.710 に答える
4

メソッドが非公開の場合は、決してテストしないでください。

これについて考えます。内部実装ではなく、メソッドの動作と契約をテストする必要があります

于 2014-01-18T00:43:33.910 に答える