|
||||||||||||||||
| 前のページ 1 2 3 | ||||||||||||||||
| ビジネス層の単体テスト比較 | ||||||||||||||||
|
このレイヤのテスト対象としては、SpringのサービスレイヤとRailsのコントローラ(Action Controller)が該当します。 |
||||||||||||||||
| Java/ビジネス層の単体テスト | ||||||||||||||||
|
このレイヤのテスト対象はSpringのサービスレイヤになります。要件によっては複雑になりがちな実装箇所ですが、幸いなことに純粋なJavaプログラムのテストであるため、テストの進め方は比較的単純です。 このレイヤーのテストには、JUnitが使用されます。 リスト5:JUnitを使用した単体テスト
public class TodoListTest extends TestCase {
|
||||||||||||||||
| Rails/ビジネス層の単体テスト | ||||||||||||||||
|
Railsのコントローラが主にビジネス層の実装になります。「テスト戦略」の項目でも解説しましたが、このコントローラだけを対象にした単体テストは実施しません。そのかわりに、機能テストと呼ばれるコントローラとモデルを統合した、他の単体テストよりも上位レベルのテストが実施されます。 では、コントローラだけでの単体テストを実施することは不可能なのでしょうか。実は、コントローラだけで単体試験を実施することもできます。「第4回:DIコンテナとの比較」で紹介したモックオブジェクトを使用することでコントローラだけの単体テストを実施することができます。しかし、効率的な品質保証を念頭においているRailsでは、コントローラだけの単体テストが実施されることはあまりありません。 リスト6:機能テスト
class TodosControllerTest < Test::Unit::TestCase
|
||||||||||||||||
| ビジネス層の単体テスト比較結果 | ||||||||||||||||
|
このレイヤの両者のテストは、それぞれのテスト戦略によって実施されるテストの位置づけが異なっているため、単純な比較はできません。 |
||||||||||||||||
| プレゼンテーション層の単体テスト比較 | ||||||||||||||||
|
Javaのプレゼンテーション層にあたるJSF、特にJSPについては、単体テストが実施しづらい箇所です。サーバサイド用の単体テストフレームワークCactusを用いることでJSPについてもテストを実施することもできますが、不具合が混入しやすいロジックを明確に分離できること、Seleniumなどの結合試験ツールが使いやすくなってきていることなどの理由から、この部分の単体テストを実施しない場合もあります。 Railsには、プレゼンテーション層用のテストは用意されていません。 |
||||||||||||||||
| その他の比較 | ||||||||||||||||
|
その他のテストに関係する周辺技術やツールについて、表4にまとめました。ほとんど差がないといってよいでしょう。
表4:その他の比較 |
||||||||||||||||
| まとめ | ||||||||||||||||
|
両者のテストを比較してみると、GUIテストツールやカバレッジなどの周辺ツールも含め、テスティングフレームワークが提供する機能的な差はほとんどなく、テスト戦略の比較の章で示したテストの進め方だけに違いがあることがわかります。 両者の戦略の違いによって「分業を重視しているJavaのテスト」と「効率を重視しているRailsのテスト」となっていることがわかります。 次回は、Railsに影響を受けたフレームワーク、GrailsとRailsの比較を行います。 |
||||||||||||||||
|
前のページ 1 2 3 |
||||||||||||||||
|
|
||||||||||||||||
|
|
||||||||||||||||
|
||||||||||||||||
|
|
||||||||||||||||
|
||||||||||||||||
|
|
||||||||||||||||
|
||||||||||||||||
|
|
||||||||||||||||
|
||||||||||||||||

