(十)プレイのyabeプロジェクト【テスト】

2487 ワード

プロジェクトテスト
1つのプロジェクトは、まず一連のテスト(開発者の自己測定、専門のテスト担当者のテスト、顧客のテスト)を経てからオンラインで実行することができます.
できるだけ早く問題を発見することはみんなにメリットがあります.開発者として、自分で書いたコードは十分に自測してからテストを提出したほうがいいです.
 
テストは異なるビジネスレベルから分けられます.
unit testユニットテスト
Basic Test
functional test機能性テスト
Application Test
selenium test
Application
 
コアモジュールのテスト---yabeプロジェクトのモデル層は、先にテストしました.
Webインタフェーステスト、すなわちyabeプロジェクトのコントローラレイヤはまだテストされていません.
UIテストもしていません.javascriptコードのテストです.
 
 
テストコントローラセクション
PlayはJUnitに基づいてアプリケーションのコントローラを直接テストすることができ、このテストを「機能性テスト」と呼ぶ.
 
1つの機能性テストはplayのActionInvokerを直接呼び出し、HTTP要求をシミュレートすることに相当する.
Playはリクエストを受信すると、これらのリクエストをルーティングし、対応するactionを呼び出し、クライアントに応答します.
クライアントが応答を受信した後、すなわちResponseオブジェクトは、結果を分析することができます!
 
この部分は、具体的なテンプレートが開発されていない場合(ページがない場合)に使用されますか?
いいえ、戻りタイプがjsonまたはxml形式のwebserviceの場合、結果の表示が便利です.
 
ページが開発されたら、直接ページからテストするほうが直感的ではないでしょうか.
はい、ページでテストができます.それはもっといいです.playが提供するseleniumテストはそうです.
 
1つ目のテストは、アプリケーションのホームページをテストします.
予想:
ホームページにアクセスし、ステータスコード200に戻り、データ型text/html、UTF-8に符号化する
 
import org.junit.*;
import play.test.*;
import play.mvc.*;
import play.mvc.Http.*;
import models.*;

/**
 * FunctionalTest  Play 
 *  , 
 *
 */
public class ApplicationTest extends FunctionalTest {
	
	
    @Test
    public void testThatIndexPageWorks() {
    	// 
        Response response = GET("/");
        // 200
        assertIsOk(response);
        // text/html
        assertContentType("text/html", response);
        // utf-8
        assertCharset(play.Play.defaultWebEncoding, response);
    }
    
}

 
 
2番目のテスト、Adminコントローラのテスト
予想:
アクセス/admin、ログインしていないためSecurityは認証を行います
認証に失敗すると、ログインページ/loginにジャンプします
要求されたパスが変更され、302ステータスコードが返される
    @Test
    public void testAdminSecurity() {
    	Response response = GET("/admin");
    	assertStatus(302, response);
    	assertHeaderEquals("Location", "/login", response);
    }

 
play testコマンドを実行してyabeプロジェクトを起動し、http://localhost:9000/@testsを開きます
 
実行するテスト項目を選択し、Startをクリックしてテストを開始します!
 
テストのこの部分はしばらく置いて、暇になってから勉強します!