どのように偉大なテストを書く!
インマイprevious post , 私は粋な選別テストについて話し合った.今日、私は偉大なテストを書く方法を教えるつもりです!新しい文章を書くときJUnit テストIは、同じ公式に続きます.これにより、テストを一貫して書くことができます.また、私は速くテストを書くのに役立ちます.私は今日あなたのフォーマットを共有したい!
ファイル
まず最初に、プロジェクトのテストパッケージに新しいテストファイル/クラスを作成し、テストメソッドを作成します.テスト終了
次に、私は私のテストに良い名前を与えることを確認します.私は個人的に単語を省略したい
概略
次に、私は私の方法の中にいくつかのボイラープレートを置きました.これは私のすべてのテストに使用するのと同じフォーマットです.私は私のテストを設定し、私は関数を呼び出すと、最終的に、私は主張のいくつかの並べ替えを使用するか、または期待結果を確保するために確認します.
テストのセットアップ
最後に、私は単に空白を埋めます.私のセットアップが他のすべてのテストに似ているならば、私はこのロジックをAに要約します
命名法のテスト
変数名の使用に注意してください
結論
この形式を使用すると、効率的な方法でより一貫したテストを記述できます.これにより、より保守性の高いコードを実装できます.この投稿をお楽しみください!私のシリーズをチェックしてくださいJUnit tests !
あなたは私の最新のソフトウェアコンテンツを最新の状態に保つ場合は私に従ってください!
ファイル
まず最初に、プロジェクトのテストパッケージに新しいテストファイル/クラスを作成し、テストメソッドを作成します.テスト終了
Test
だから、対応するクラスを見つけるのは簡単です.クラス名SomeService
という名前のSomeServiceTest
. 次に、私は私のテストに良い名前を与えることを確認します.私は個人的に単語を省略したい
test
テストクラスで冗長なので.テストの名前はテストされていることを記述すべきです.簡単に同様のテストを区別することができます.public SomeServiceTest{
@Test
public void sortByPopularVoteDesc() {
}
@Test
public void sortByPopularVoteAsc() {
}
}
概略
次に、私は私の方法の中にいくつかのボイラープレートを置きました.これは私のすべてのテストに使用するのと同じフォーマットです.私は私のテストを設定し、私は関数を呼び出すと、最終的に、私は主張のいくつかの並べ替えを使用するか、または期待結果を確保するために確認します.
public TestClass{
@Test
public void sortByPopularVote() {
// setup
// test
// assert/validate
}
}
これらのコンポーネントのいくつかを議論しましょう.setup
- これはテストするコードを準備する場所です.test
- これはテスト中の関数を呼び出す場所です.これは、あなたのテストで複数の関数を呼び出す場合は指摘するのに良いことができます.assert/validate
- これはあなたが実際に使用する場所ですassert
or validate
関数は、実際の出力が期待するものと一致するようにします.テストのセットアップ
最後に、私は単に空白を埋めます.私のセットアップが他のすべてのテストに似ているならば、私はこのロジックをAに要約します
@Before
関数.この関数は、各テストの前に呼び出されます.あなたがいくつかのテストの間の一般的なセットアップを持っているが、それらのすべてでないならば、それは特定のセットアップ命令をカプセル化するために個人の機能を書くことも一般的な習慣です.どちらのオプションも共通のテストのセットアップを再利用可能になります.あなたのテストを設定するの変更を行う必要がある場合のみ1つの場所でそれを確認する必要があります.これはリファクタがある特定のテストを中断するときに非常に便利です.public TestClass{
private List<SortableObj> expected;
private final SortableObj first = new SortableObj();
private final SortableObj second = new SortableObj();
private final SortableObj third = new SortableObj();
private final SortableObj fourth = new SortableObj();
@Before
public void before{
// some decoration on objects
// ...
expected = Arrays.asList(first, second, third, fourth);
}
@Test
public void sortByPopularVote() {
// setup
List<SortableObj> actual = Arrays.asList(fourth, third, first, second);
// test
Collections.sort(actual);
// assert/validate
assertThat(actual).isEqualTo(expected);
}
}
命名法のテスト
変数名の使用に注意してください
expected
and actual
. これらは一般的にテストを書くことに関連付けられているキーワードであり、それらをより読みやすくする.あなたが欲しいactual
関数から返されるオブジェクトexpected
値.expected
- これは出力がどのように見えるかについての変数の名前です.この例では、リストがある順序になります.actual
- これは、テスト中の関数の出力に使用する変数の名前です.これは関数への“実際の”出力です.Nomenclature - The devising or choosing of names for things, especially in a science or other discipline. In the context of software, this deals with the consistent naming of API endpoints, responses, variables, functions, and documentation.
結論
この形式を使用すると、効率的な方法でより一貫したテストを記述できます.これにより、より保守性の高いコードを実装できます.この投稿をお楽しみください!私のシリーズをチェックしてくださいJUnit tests !
あなたは私の最新のソフトウェアコンテンツを最新の状態に保つ場合は私に従ってください!
Reference
この問題について(どのように偉大なテストを書く!), 我々は、より多くの情報をここで見つけました https://dev.to/ninan_phillip/how-to-write-great-tests-4719テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol