2012-06-12 12 views
5

個人用プロジェクトとしてJavaScriptアプリケーションを作成し始めました。私は、このプロジェクトの単体テストを学び、使用したいと考えています。私は単体テストを書くのに多くの経験がありませんが、私はこれを達成するのに役立つ良いライブラリになるとJasmineが読んでいます。JavaScriptの開発 - ユニットテストをいつ開始すればよいですか?

これは、私の最初のコーディングの中で少し過激でした。私はアイデアを持ってそれと走った。このように、私のアプリケーションの構造は、私が好むほどOOではなかった。これは、複数の大きなリファクタの道を私に導きました。私は、弱い型の言語でリファクタリングすると、特にバグの再入を起こしやすいことがわかりました。

私が戻ってきて、私が再導入したバグに対処しなければならないという事実は、私に単体テストのために憧れています。対照的に、私がコードベースの基盤を再構築しているという事実は、まだまだ私には躊躇しています。私は自分のプロジェクトの単体テストを作成して、より多くのリストラ(「エラーを修正する」という点を過ぎてテストを廃止することになる)が必要であると判断するだけです。

これは共通の関心事ですか?私の「基盤」がテストを書くのに十分安定しているような時が来るような気がするのですが、それはテストの魅力をあまり魅力的にしません。

+2

私はこれが[programmers.se]に属していると感じます。 – zzzzBov

答えて

4

現在のコードベースを「実験的」または「プロトタイプ」として扱うことを検討したいと思います。

コードベースのリファクタリングを計画している場合は、リファクタリング前またはリファクタリングされたコードの前に単体テストを導入することをお勧めします。

現在のコードベースのテストを書くことの利点は非常に明白です。リファクタリングされたコードベースを実行して機能を検証できます。リファクタリングをしている間は、おそらくテストを幾分再構成する必要がありますが、それは正常です。

テストの書き換え中に行うべきでないことは、テストを削除することです。どのようにテストが正常に機能するかを置き換えながら、各テストの最終的なアサーションをすべて同じに保つようにしてください。この方法で、テストの内容を把握し、新しい機能が同じ仕事をすることができるはずです。

もちろん、オリジナルコードを非OO形式で書いた場合は、それをうまくテストするのが難しいかもしれません。この場合、元のコードの上位レベルのテスト(機能テスト)を作成するか、TDDタイプのアプローチを使用してリファクタリングされたコードを書き込むかを選択することをお勧めします。

機能テストを使用すると、アプリケーションの主な機能のテストカバレッジを持つことができます。単体テストのようなきめ細かなテストはありませんが、テストをより簡単に書くことができ、最終的にテストを変更する必要はありません。これにはSeleniumのようなツールを使うことができます。

TDDアプローチでは、おそらく最も少ない労力を要します。新しく作成されたコードのテストカバレッジを確実にすることはできますが、コードを手動で検証する必要があります。

関連する問題