日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Play Framework 2.5.x 测试环境搭建

發布時間:2023/12/14 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Play Framework 2.5.x 测试环境搭建 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Play Framework 2.5.x 測試環境搭建

目錄

    • Play Framework 25x 測試環境搭建
    • 目錄
    • 準備工作
    • 目標
    • GO
      • buildsbt
      • conf
      • TestGlobal
    • 應用
      • test

準備工作

  • Play 2.5.x Project Based on SBT

    • 自帶 Junit 4.12
    • 自帶 Guice 4.0
  • Mockito (2.2.11)

目標

搭建基于 Dependency Inject (使用 Guice) 的 PlayJava 工程的測試環境

GO

build.sbt

添加以下依賴:

libraryDependencies += "org.mockito" % "mockito-core" % "2.2.11" % "test"

設置 JavaOption:

javaOptions in Test ++= Seq("-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9998","-Xms512M","-Xmx1536M","-Xss1M","-XX:MaxPermSize=384M","-Dconfig.resource=application.test.conf","-Dlogger.resource=logback-test.xml" )

conf/

在 build.sbt 中定義的 application.test.conf 和 logback-test.xml 要放置在工程根目錄下的 conf/ 中。

如果不想 testcase 在 run 的過程中產生煩人的日志,在 logback-test.xml 中配置如下:

<?xml version="1.0" encoding="UTF-8"?> <!-- SHUT THE LOG UP! --> <configuration />

在 application.test.conf 配置文件中添加如下一行

application.global=TestGlobal

將 test 的 Global 跟 production 的 Global 區分開來。

TestGlobal

TestGlobal 類如下:

import play.Application; import play.GlobalSettings;/*** Created by STEPHEN on 06/12/17.*/ public class TestGlobal extends GlobalSettings {private static final String TAG = TestGlobal.class.getSimpleName();@Overridepublic void onStart(Application app) {}@Overridepublic void onStop(Application app) {} }

將 TestGlobal.java 文件放置在 工程根目錄的 test/ 下。

應用

開發中的邏輯幾乎都在 Service 層中,那么最常見的就是對 Service 進行 Unit Test。假設有兩個類 – Service 和 Dao。 簡單定義如下:

public class Service {@Injectprivate Dao dao;public Document getQualifiedUser(String uid) {Document user = dao.getUserById(uid);/* 針對這個 user 會有很多的處理,比如 validation 等等 */ /* ... *//* 最終返回 user */return user;} }public class DaoImpl implement Dao {private static SomeDB sdb = SomeDBFactory.get();@Overridepublic Document getUserById(String uid) {return sdb.find(id=uid).one();} }

針對這種常見的模型,可以進行如下的操作:

test/

在 test/ 下新建 servicetest/unittest/ServiceTest.java

內容如下:

abstract class ServiceTest {Dao dao;Injector injector;@Beforepublic void setUp() throws Exception {dao = Mockito.mock(DaoImpl.class);injector = Guice.createInjector(new AbstractModule() {@Overrideprotected void configure() {bind(Dao.class).toInstance(dao);}});}@Afterpublic void tearDown() throws Exception {injector = null;dao = null;}}

再建立真正的測試類:

public class SpecificServiceTest extends ServiceTest {@Testpublic void testGetUserById() {/* MOCK BEGIN *//* mock db queries one user */when(dao.getUserById(anyString())).thenReturn(new Document("name", "stephen").append("age", 25));/* MOCK END *//* CALL BEGIN */Service service = injector.getInstance(Service.class);Document user = service.getQualifiedUser("13");/* CALL END *//* ASSERT BEGIN */assertEquals("stephen", user.getString("name"));assertEquals(25, user.getInt("age"));/* ASSERT END */}}

在工程目錄下,輸入:

activator test

Ok!

總結

以上是生活随笔為你收集整理的Play Framework 2.5.x 测试环境搭建的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。