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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

容器对象模式。 一种新的测试模式。

發布時間:2023/12/3 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 容器对象模式。 一种新的测试模式。 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如果您搜索什么是頁面對象的描述,就會發現頁面對象模式為我們提供了一種以可重用和可維護的方式對內容建模的常識方法。

還要指出:在Web應用程序的UI中,您的測試與某些區域交互。 Page Object只是將它們建模為測試代碼中的對象。

這減少了重復代碼的數量,并且意味著如果UI更改,則僅需要在一個地方應用此修復程序。

如您所見, Page Object適用于UI元素。 我們( Arquillian社區)在Page Object模式邏輯之后創造了一種新模式,稱為Container Object模式。

您可以將“ 容器對象”視為您的測試可能與之交互的容器區域(現在為Docker容器)。 例如,其中一些領域可能是:

  • 獲取運行容器的主機IP。
  • 給定暴露端口的有界端口。
  • 在配置文件(Dockerfile)中配置的任何參數,例如用于訪問容器公開的服務的用戶或密碼。
  • 容器的定義。

一個容器對象內部可能包含多個容器對象的集合。 這有效地在容器之間建立了關系船(鏈接)。

例如,在容器中運行MySQL數據庫的情況下,配置參數的示例可能是訪問數據庫的用戶和密碼。

請注意,沒有什么可以阻止您生成用于從測試訪問服務的正確URL,或阻止針對容器執行命令,例如檢索內部文件。

當然,就像Page Object一樣, Container Object為您提供了一種構建模型內容的方法,該模型內容可用于多個項目。

在研究如何在Arquillian Cube中實現此模式之前,我們先來看一個示例:

假設您所有的應用程序都需要將文件發送到FTP服務器。 要編寫集成/組件測試,您可能需要一個FTP服務器來發送文件并檢查文件是否已正確發送。

一種方法是在執行測試之前使用Docker啟動FTP服務器,然后使用該Docker容器用于FTP服務器執行測試,然后再停止容器以檢查文件是否存在,最后停止容器。

因此,所有涉及FTP服務器和容器的所有操作都可以在Container Object中加入。 該容器對象可能包含以下信息:

  • 使用哪個圖像
  • 運行此FTP服務器的主機的IP和綁定端口
  • 訪問FTP服務器的用戶名和密碼
  • 斷言文件存在的方法

然后從測試的角度來看,它僅與該對象通信,而不是直接對測試內部的所有信息進行硬編碼。

再次與Page Object中一樣 ,容器上的任何更改都只會影響Container對象,而不會影響測試本身。

現在,通過一個非常簡單的示例,看看Arquillian Cube如何實現Container Object模式:

Arquillian多維數據集和容器對象

讓我們看一個簡單的示例,說明如何在Cube中實現Container Object 。 假設您要創建一個容器對象,該對象封裝了在Docker內部運行的乒乓服務器。

容器對象將類似于帶有特殊注釋的簡單POJO:

@Cube(value = "pingpong", portBinding = "5000->8080/tcp") // <1> @CubeDockerFile public class PingPongContainer {@HostIp // <2>String dockerHost;@HostPort(8080) // <3>private int port;public URL getConnectionUrl() { // <4>try {return new URL(“http://” + dockerHost + “:” + port);} catch (MalformedURLException e) {throw new IllegalArgumentException(e);}} }

在前面的示例中,您必須注意以下幾行:

  • @Cube注釋配置Container Object 。
  • 容器對象可以使用Arquillian濃縮器進行濃縮。
  • 為給定的裸露端口注入有界端口。
  • 容器對象隱藏了如何連接到PingPong服務器。
  • @Cube批注用于配置此Container對象 。 最初,您將啟動的容器命名為pingpong,并設置容器實例的端口綁定信息,在本例中為5000→8080 / tcp 。

    請注意,這可以是一個數組,用于設置多個端口綁定定義。

    下一個注釋是@CubeDockerFile ,它配置如何創建容器。 在這種情況下,請使用位于默認類路徑位置的Dockerfile 。 默認位置是package + classname ,因此例如在以前的情況下, Dockerfile應該放置在org / superbiz / containerobject / PingPongContainer目錄中。

    當然,您可以通過將注解作為值傳遞來設置任何其他類路徑位置。 CubeDockerFile批注設置找到Dockerfile的位置,而不是文件本身。

    同樣,該位置應該可以從ClassLoader到達,因此這意味著應該從類路徑中加載它才能找到它。

    任何多維數據集都可以使用任何客戶端擴展器進行擴展 ,在這種情況下,可以使用@HostIp 優化器進行擴展 ,但是也可以使用@ArquillianResource通過DockerClient進行擴展 。

    最后, @ HostPort用于將公開的端口轉換為綁定的端口。

    因此,在此示例中,端口值將為5000 。 您將簡要了解為什么此批注很重要。

    然后,您可以在測試中開始使用此容器對象:

    @RunWith(Arquillian.class) public class PingPongTest {@CubePingPongContainer pingPongContainer;@Testpublic void shouldReturnOkAsPong() throws IOException {String pong = ping();assertThat(pong, containsString("OK"));assertThat(pingPongContainer.getConnectionPort(), is(5000));} }

    這里最重要的是,您需要將Container Object設置為類的字段,并使用@Cube進行注釋。

    用Cube注釋字段非常重要,因此Arquillian在運行測試之前,可以檢測到它需要啟動一個新的Cube (Docker容器),創建Container Object并將其注入測試中。

    請注意,此批注與定義Container Object時使用的批注完全相同。

    之所以這樣,是因為您可以從測試端覆蓋Container Object的任何屬性。 這就是@HostPort批注很重要的原因,因為可以從測試定義中更改端口,所以您需要找到一種在容器對象內部注入正確端口的方法。

    在這篇文章中,我介紹了容器對象模式以及如何在Arquillian Cube中使用 。 但這只是一個小嘗試,您可以在以下位置閱讀有關Arquillian Cube和Container Object集成的更多信息:

    • https://github.com/arquillian/arquillian-cube#arquillian-cube-and-container-object

    還可以在以下位置找到運行示例:

    • https://github.com/arquillian/arquillian-cube/tree/master/docker/ftest-docker-containerobject

    翻譯自: https://www.javacodegeeks.com/2016/01/container-object-pattern-new-pattern-tests.html

    總結

    以上是生活随笔為你收集整理的容器对象模式。 一种新的测试模式。的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 国产精品玖玖玖 | 国产精品国产自产拍高清av | 91 在线观看 | 天堂岛av| 欧美xxxx少妇 | 99热只有这里有精品 | 日本一区视频 | 久久免费少妇高潮99精品 | 欧美黄视频 | 我的好妈妈在线观看 | 中文字幕导航 | 国产suv精品一区二区60 | 久久精品久久精品久久精品 | 美女高潮视频在线观看 | 99热一区二区 | 日本少妇xxxx动漫 | 久久久99久久 | 720url在线观看免费版 | 日本狠狠爱 | 岛国av电影在线观看 | av片免费| 一本一道波多野结衣一区二区 | www.视频一区 | 亚洲AV成人无码久久精品同性 | 国产又黄又猛的视频 | 久久网免费视频 | 韩国无码av片在线观看网站 | 亚洲精品国产精品乱码不卡 | 无码精品人妻一区二区三区漫画 | 少妇精品视频一区二区 | 精品综合久久久久 | 黄色片中文字幕 | 91精品国产一区二区三区香蕉 | 亚洲精品99999 | 奇米久久久 | 日韩av在线直播 | 影音先锋在线看片资源 | 国产精品一区二区免费看 | 亚洲成年人网站在线观看 | 成人免费高清视频 | 亚洲h片 | 欧美性吧| 青青草公开视频 | 日韩一及片 | 午夜在线你懂的 | 一道本在线观看视频 | 日本精品99 | 99国产精品人妻噜啊噜 | 欧美日韩国产一区二区三区 | 国产超级av | 日韩射吧 | 欧美日韩毛片 | 欧美一级免费观看 | 色呦呦网站在线观看 | 精品国产精品 | 亚洲综合欧美综合 | 最近日本中文字幕 | 日日夜夜爽爽 | 福利片网址 | 视屏一区| 久久精品黄aa片一区二区三区 | 黄色av软件 | 99久久久国产 | 在线观看国产黄色 | 日本一区二区观看 | 极品美女高潮出白浆 | 国产91在线视频观看 | 日本熟妇一区二区三区四区 | 韩国成人理伦片免费播放 | 中文字幕日韩三级片 | 国语对白精彩对话 | 青草精品| 精品国产三级片在线观看 | 日韩欧美在线一区二区 | 亚洲中字在线 | 国产一级片毛片 | 少妇免费看 | 欧美人与禽猛交乱配视频 | 欧美精品日韩在线 | 天天视频国产 | 免费一级片视频 | 欧美一级大片免费看 | 欧美一级免费 | 婷婷色婷婷开心五月四房播播 | 伊人久久97| 久久青草免费视频 | 97人妻精品一区二区三区 | 99精品欧美一区二区三区综合在线 | 国产一区二区免费电影 | 欧美一区二区三区久久久 | 成人乱人乱一区二区三区一级视频 | 在线观看国产成人 | 夜夜爱爱 | avtt一区| 美女在线免费视频 | 一起草在线视频 | 久久艹伊人 | 黑人一区二区三区 | 成人午夜视频精品一区 |