日韩性视频-久久久蜜桃-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一区二区三区漫画 | 五月天小说网 | h片在线观看免费 | 国产一区二区欧美日韩 | 国产精品果冻传媒 | 国产香蕉视频在线播放 | 欧美黄色激情 | 国产精品丝袜一区二区 | 免费成人激情视频 | 黑白配在线观看免费观看 | 国产精伦 | ,午夜性刺激免费看视频 | 色站在线| 最新毛片基地 | 欧美激情片在线观看 | 天堂网视频在线观看 | 国产一区二区不卡视频 | 日本一区二区三区免费在线观看 | 欧美精品在线播放 | 少妇高清精品毛片在线视频 | 国产精品美女www | 成人精品一区二区 | 成人黄色一区二区 | 日韩国产第一页 | av毛片基地| 中文字幕有码无码人妻av蜜桃 | 黄色一级大片在线免费看产 | 国产二区一区 | 免费国产成人 | 一级黄av | 亚洲xxxx天美 | 极品在线视频 | 香蕉久久夜色精品国产使用方法 | www.狠狠干 | 精品无码人妻一区二区免费蜜桃 | 懂色av一区二区在线播放 | 国精产品一区二区 | 欧美一区二区国产 | 99av在线 | 人人澡人人射 | 99久久久无码国产精品性青椒 | 欧美色香蕉| 97se在线| 伊人色网| 91黑人精品一区二区三区 | 国产真实乱人偷精品人妻 | 日本h视频在线观看 | 日本打白嫩屁股视频 | 日韩欧美综合 | 久久国| 制服一区二区 | 欧美射射| 韩国黄色大片 | 亚洲精品一级片 | 黄色三级网站在线观看 | 丝袜一区二区三区四区 | 欧美高清久久 | 国产在线视频你懂得 | 让人下面流水的视频 | 日韩一区二区免费看 | 国产精品三级在线观看无码 | 欧美区一区二 | 精品妇女一区二区三区 | 春色校园激情 | caoprom在线视频 | 精品xxxx| 国产伦精品一区二区三区免费迷 | 波多野42部无码喷潮 | 成人免费一区二区三区在线观看 | 天天看天天操 | 亚洲激情自拍偷拍 | 欧美日韩国产高清 | 97超碰免费观看 | 国产情侣一区二区三区 | 女人脱裤子让男人捅 | 免费观看理伦片在线播放视频软件 | 韩国美女视频在线观看18 | 日韩三区在线 | 合欢视频在线观看 | 国产高清免费观看 | 午夜日韩av | 一本久久a精品一合区久久久 | 99mav| 日本va欧美va国产激情 | 不卡二区| 国产成人无码aa精品一区 | 黄色一级大片免费看 | 国产精品视频一区二区在线观看 | 午夜视频免费在线观看 | 精品少妇久久 | 91免费视频大全 | 五月婷婷六月婷婷 | 日韩中文网 | 女的高潮流时喷水图片大全 | 国产对白刺激视频 | 日本一区视频在线观看 | 欧美成人xxxx |