2013-07-30 62 views
0

我的公司希望脫離JUnit 3並開始只使用JUnit 4.另一位實習生和我已被賦予將舊版JUnit 3測試轉換爲使用JUnit 4約定的任務。但是,我正在轉換我正在處理的測試文件。如何將這些JUnit 3測試轉換爲JUnit 4?

從我可以告訴,有一個generateTest方法返回一個SSlTest(SSlTest是TestCase的一個子類)。返回的SslTest覆蓋runTest。 runTest包含一個啓動兩個線程的try-catch塊,clientThread和serverThread(這兩個線程都是在測試文件中定義的Thread的子類)。看起來實際的測試是在線程內部完成的,因爲runTest的其餘部分用於從兩個線程捕獲異常。

generateTest被另一個方法generateSuite調用(返回一個TestSuite)。 generateSuite包含一個外部for循環,它將套件添加到主套件。內部for循環使用generateTest將測試添加到主套件中的每個套件。主套件是該方法返回的內容。

最後,在測試文件的main方法中調用的suite()方法內部,設置while循環以使用generateSuite生成套件並將它們添加到更大的套件中。


我發現遷移到JUnit 4的唯一指南是簡單得多的測試用例。我現在很迷茫,我公司沒有人知道足夠的JUnit 4來幫助我,所以任何提示都會非常感謝!

+1

你擅長敘述代碼:) ..你可以發佈代碼本身嗎? – Tala

+0

你說「generateTest ...返回一個SSITest」 - 你的意思是它返回一個類的實例?還是它寫了一個類的代碼?我知道JUnit 3和4之間的主要區別在於3使用了「test ...」作爲其測試方法的名稱,而4使用了「@Test」註釋。你沒有提到你的3種方法的「測試...」方法;他們沒有他們嗎?他們不遵循慣例,還是我錯過了什麼? – arcy

+0

1.我不確定是否可以自己發佈代碼,因爲它是公司代碼,我不想陷入困境。 2.是的,它返回一個類的實例。有一個在clientThread中調用的「test ..」方法。 – gchan

回答

2

我要做的第一件事就是試着說服任何人給我的任務,這是不必要的。我知道作爲一名實習生很難,但值得確保這個人明白這是沒有必要的。

事實爲令人信服:

  • JUnit的4罐子同時包含junit.framework和org.junit封裝結構所以它是後向兼容的。
  • JUnit具有廣泛的應用。他們的JUnit項目的所有者非常清楚這一點,不會要求人們重寫所有的測試。換句話說,他們不會放棄兼容性。
  • 其實試試吧。認真。嘗試像使用JUnit 4 jar一樣運行現有的測試代碼。你會看到如果你有任何編譯錯誤。如果你這樣做,那些是需要關注的領域。如果你不這樣做,你就有很好的證據顯示給你任務的人。

這並不意味着你不需要改變任何東西。這意味着您不必更改大部分代碼。如果你有自定義的跑步者,你會想要使用JUnit 4風格。您還可能需要classpath suite來收集測試。

將部分測試轉換爲JUnit 4也有價值,因此團隊中的開發人員可以使用一些示例。但是將它們全部轉換並不能很好地利用時間。

在不能夠張貼代碼

獲取互聯網上的幫助是沒有代碼非常困難。我可以理解你的僱主不希望你發佈代碼。 (但是,他們可能不希望你發佈類和方法的名字 - 你做的。)幸運的是,有一個選擇。改爲創建一個SSCCE。 (閱讀鏈接 - 當你在工作中取得進步時,它會幫助你很多。)另外,較小的示例更易於閱讀,它允許您更改類/方法/ etc名稱,然後您的僱主將不會在線獲得他們的代碼。