簡體   English   中英

在兩個不同的 JVM 中測試通信軟件

[英]Testing communications software in two different JVMs

我用 Java 編寫了一個通過套接字進行通信的模塊。 我想編寫一個單元測試來測試發送和接收。

為了真正測試系統,我想將發送方放在一個 JVM 中,將接收方放在另一個 JVM 中,然后一起測試它們。

從我在這里和各種博客文章中讀到的內容來看,這並不是真正的單元測試,而是集成測試。 好的,很好,但我仍然希望它成為構建過程的一部分。

是否有官方推薦的方法可以從 Junit 測試用例中啟動第二個 JVM? 如果沒有,是否有另一個為此設計的標准測試框架?

我在構建中使用了一些 shell 腳本。 不確定如何驗證結果,但是在自動構建中運行 Maven 的任何內容都可以檢查某些輸出文件或其他內容。 在構建/插件下我這樣做:

<plugin>
    <artifactId>exec-maven-plugin</artifactId>
    <groupId>org.codehaus.mojo</groupId>
    <version>1.3.2</version>
    <executions>
        <execution>
            <id>Validate English and Term Customization</id>
            <phase>test</phase>
            <goals><goal>exec</goal></goals>
            <configuration>
                <executable>${project.basedir}/validate.sh</executable>
                <workingDirectory>${project.basedir}</workingDirectory>
            </configuration>
        </execution>
    </executions>
</plugin>

您基本上必須創建一個單獨的項目來通過網絡部署和測試您的代碼。 這在很多方面都將是痛苦的。 您可能認為“集成測試”和“許多方面的痛苦”在某種程度上是同義詞。

使集成測試保持最新可能是世界上進行更好的單元測試的最佳靈感。 我仍然會盡可能地嘗試單元測試。

  • 將您的單元測試放在與您正在測試的代碼不同的包中,以確保您不會訪問包范圍內的任何內容。
  • 每次在 2 個服務器上出現問題時,在修復錯誤之前努力編寫一個在構建中失敗的單元測試,然后驗證它在修復后是否通過。
  • 如果您願意剔除足夠多的東西,通常可以進行徹底的單元測試。 根據我的經驗,比起用一個完整的獨立(但完全依賴)項目來進行單元測試,如果它不起作用,它會破壞你的構建,更容易進行艱巨的努力來解決問題。
  • 您能否使用代碼檢查工具(現成的、grep/sed 腳本或自定義程序)而不是集成測試來找到這些錯誤? 我更願意看到你從你的構建中運行它。

即使您有一個完整的獨立集成測試項目,它是您構建的一部分,您可能希望每天一次/每周運行一次,而不是每次簽入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM