2013-10-18 19 views
0

我正在運行一些JUnit測試,並且遇到了ComparisonFailure,但我無法理解爲什麼,因爲我的實際外觀和預期外觀完全相同。ComparisonFailure - 看不到物理差異

correctline = " The following quotation about writing test programs for a document" + "\n"; 

我的assertEquals的說法是:

assertEquals("wrong contents: line", correctline, output.toString()); 

的誤差。

wrong contents: line expected:<...rams for a document[] 

但:< ...爲一個文件[

] 
+0

做'assertEquals(「錯誤內容:打印機」,correctline.trim(),output.toString());' – Prateek

回答

2

correctline前面的3個空格公羊似乎是差。如果它們很重要,那麼你的測試告訴你output.toString()是錯誤的。如果他們不是重要的,那麼無論是從correctline或打電話給trim()空格去掉,使空格開頭或結尾並不重要:

assertEquals("wrong contents: printer", correctline.trim(), 
    output.toString().trim()); 
+0

如果它們不重要,考慮[Matchers.equalToIgnoringWhiteSpace](http://hamcrest.org /JavaHamcrest/javadoc/1.3/org/hamcrest/Matchers.html#equalToIgnoringWhiteSpace%28java.lang.String%29)使斷言更清晰。 – Joe

+0

請注意,方括號表示不同,所以它是不同字符串的* end *處的空格。 – Joe

0

這可能是在該行的結尾不同的白色空間。可以肯定的是,在斷言之前放置一個斷點,並在調試器中注入預期的和實際的字符串 - 這會比嘗試幾次猜測並每次重新運行測試,直到你做對了它快得多。