我有一個採取數據結構並寫入OutputStream的方法。我想編寫一個單元測試,確保給定輸入的該函數的輸出不會意外改變。使用junit檢查輸出是否穩定的最佳方法是什麼?
我覺得我的測試結構正確,使用JUnit理論。我的@DataPoints是一對標識符和示例數據結構,並且我有一個@Theory方法的輸出將與簽入到使用標識符使用getResourceAsStream獲取的版本控制的文件相同。
然而,痛苦的部分首先是生成這些文件。我目前非常醜陋的解決方案是一個名爲WRITE_TEST_OUTPUT的布爾常量,通常是錯誤的。當我想重新生成輸出文件(或者是因爲我更改了@DataPoints的列表,或者方法的期望行爲已經改變),我將此常量設置爲true,並且有一個測試,當這是真時,再次運行該函數將當前輸出文件寫入/ tmp中的目錄。然後它斷言該常數是錯誤的,所以我不會意外檢查一個常數爲真的版本。
讓代人僞裝成測試是非常方便的,所以我可以在Eclipse中運行它,但它看起來像一個可怕的kludge。這似乎是人們必須始終做的事情 - 其他人找到了什麼樣的解決方案?
我不知道如何運行測試可以找出它應該保存在Maven模塊中的文件 - getResource()將返回目標下的目錄,而不是在src /測試/資源。 – 2011-12-18 10:57:36