Play framework 2.0 -測試

#測試應用程序

 

測試資源文件必須放在應用的test目錄下。你可以通過play控制檯使用test和test-only來執行測試任務。

 

1.使用JUnit

 

Play2.0默認使用JUnit進行測試。


package test;

	import org.junit.*;

	import play.mvc.*;
	import play.test.*;
	import play.libs.F.*;

	import static play.test.Helpers.*;
	import static org.fest.assertions.Assertions.*;

	public class SimpleTest {

	    @Test 
	    public void simpleCheck() {
		int a = 1 + 1;
		assertThat(a).isEqualTo(2);
	    }
	    ...
 

 

2.在僞應用程序中運行

 

如果你需要測試的代碼依賴一個運行中的程序,你可以在fly上輕鬆的創建一個FakeApplication。


@Test
	public void findById() {
	    running(fakeApplication(), new Runnable() {
	       public void run() {
		   Computer macintosh = Computer.find.byId(21l);
		   assertThat(macintosh.name).isEqualTo("Macintosh");
		   assertThat(formatted(macintosh.introduced)).isEqualTo("1984-01-24");
	       }
	    });
	}

 

你也快傳遞(或重寫)另外的應用程序配置,或者mock任何插件。例如使用默認的內存數據庫創建一個FakeApplication。

fakeApplication(inMemoryDatabase())
 

 

#編寫功能測試

 

1.測試模板

 

因爲模板是個標準的Scala函數,你可以在test中執行它並檢查結果。


@Test
	public void renderTemplate() {
	    Content html = views.html.index.render("Coco");
	    assertThat(contentType(html)).isEqualTo("text/html");
	    assertThat(contentAsString(html)).contains("Coco");
	}
 

 

2.測試你的Controllers

 

通過檢索路由,你可以得到一個action的引用,如controllers.routes.ref.Application.index。然後你可以調用它:


@Test
	public void callIndex() {
	    Result result = callAction(controllers.routes.ref.Application.index("Kiki"));   
	    assertThat(status(result)).isEqualTo(OK);
	    assertThat(contentType(result)).isEqualTo("text/html");
	    assertThat(charset(result)).isEqualTo("utf-8");
	    assertThat(contentAsString(result)).contains("Hello Kiki");
	}
 

 

3.測試路由

 

不同於自己調用action,你可以讓路由這麼做:

@Test
	public void badRoute() {
	    Result result = routeAndCall(fakeRequest(GET, "/xx/Kiki"));
	    assertThat(result).isNull();
	}
 

 

4.啓動真的Http服務器

 

有時候你想測試真的Http棧模型。那麼你可以啓動一個測試服務器:

@Test
	public void testInServer() {
	  running(testServer(3333), new Callback0() {
	      public void invoke() {
		 assertThat(
		   WS.url("http://localhost:3333").get().get().status
		 ).isEqualTo(OK);
	      }
	  });
	}
 

 

4.在web瀏覽器中測試

 

如果你想在web瀏覽器中測試你的應用,你可以使用selenum WebDriver。Play會爲你啓動WebDriver,並且

用FluentLenium提供的簡便API包裝它。

@Test
	public void runInBrowser() {
	    running(testServer(3333), HTMLUNIT, new Callback<TestBrowser>() {
		public void invoke(TestBrowser browser) {
		   browser.goTo("http://localhost:3333"); 
		   assertThat(browser.$("#title").getTexts().get(0)).isEqualTo("Hello Guest");
		   browser.$("a").click();
		   assertThat(browser.url()).isEqualTo("http://localhost:3333/Coco");
		   assertThat(browser.$("#title", 0).getText()).isEqualTo("Hello Coco");
		}
	    });
	}
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章