2012-01-29 62 views
2

我很好奇,如果有定義單元測試的平臺中立方式。考慮使用Java和C#中的代碼庫爲新集實現定義一些單元測試的任務。例如,我們可能想要測試{3,4,5}相交{4}是{4}。而不是編寫這個單元測試兩次(一次在我們的Java項目中,一次在我們的C#項目中),最好定義一次測試(可能用XML?),然後讓每個運行時自動讀取並執行測試。需要在每種語言中完成一些工作來定義應該如何實例化和填充集合,但是似乎我們只需要配置一次這樣的細節,當收益不會重複n個單元測試時,這似乎是合理的。平臺中性單元測試?

有沒有人知道這個目標的語言或框架?

回答

0

我沿着你描述的方向開發了一些東西,可以讓你定義高級測試,然後用C或C++生成測試工具源代碼。

http://www.apollo-systems.co.uk/dev/products/

我是否延長它生成C#和Java取決於需求。它主要針對C和C++爲首選語言的嵌入式系統市場。

測試規範存儲在XML中,我已經定義了一組最小的操作來允許您執行一些有用的操作。開發這個的動機是讓你專注於你想測試的東西,而不是編寫測試代碼。

2

有幾個問題與潛在的框架,這樣的平臺中立的單元測試:C#和Java的代碼段(如,這樣的工具將需要知道哪個Java/C#方法或類之間

  • 映射測試給出某種說XML配置文件)
  • 外部庫之間的差異(即使你可以讓你自己的代碼的翻譯可以很容易地實現,外部庫提供者可能不會 - 甚至很可能不會在意)
  • 語言不同自己

當然,也許人們可以用相當先進和深思熟慮的配置文件來克服這些問題。但後來又提出了另外一個問題 - 是不是還在單元測試我們在做什麼?單元測試是嚴格綁定到代碼它正在測試(用同樣的語言寫成第一首),真的沒有聰明的辦法再次去這條規則。用XML編寫「單元測試」?這聽起來不對。

有這麼簡單的事情要記住 - 單元測試應該是簡單而簡單的過程。你所要求的方法很可能會使它過於複雜。用相同的語言編寫測試很簡單 - 畢竟,你應該能夠編寫實現。引入額外框架引入了學習它的必要性,維護它並處理它可能導致的可能的新問題。

總的來說,針對不同平臺的工具的問題總是相同的 - 當這樣的工具過於籠統或平臺限制過於具體時,會出現這種情況。那就是你必須回退到平臺語言/工具本身。所以,儘管它可能聽起來很有吸引力非常簡單例子(就像你的相交一樣),但總的來說我不認爲這是值得的。無論如何,你最終都會以混合的方式做東西。