JUnit assertEquals Changes String
。
簡而言之:assertEquals("Hello World", "HelloWorld");在失敗跟蹤中出現預期:<Hello[ ]World>但卻是:<Hello[ ]World>
很好。絕對沒有浪費我的時間去弄清楚為什么我的分析器會隨機地丟出方括號。
我如何禁用這個功能?
我使用的是 Eclipse 4.0。
我使用 Eclipse 4.19.0 for Java,JUnit 4.10.
。uj5u.com熱心網友回復:
你不能。
這些括號是由junit.framework.ComparisonCompactor添加的,它被用于org.junit.ComparisonFailure斷言錯誤的getMessage方法(這個錯誤是由assertEquals拋出)
// ComparisonFailure class。
public String getMessage() {
return new ComparisonCompactor(MAX_CONTEXT_LENGTH, fExpected, fActual).compact(super.getMessage() )。
}
在ComparisonCompactor中,這些括號是硬編碼的,似乎沒有可以提供的配置,同時ComparisonCompactor也不能被注入(對于ComparisonFailure也是如此 - 你無法為它們提供自定義的實作)
public class ComparisonCompactor {
private static final String ELLIPSIS= " ...";
private static final String DELTA_END= "] ;
private static final String DELTA_START= " ["/span>;
/ ...
private String compactString(String source) {
String result= DELTA_START source.substring(fPrefix, source.length() - fSuffix 1) DELTA_END。
在我看來,即使在Junit 4.13中也是完全一樣的,所以即使提高依賴性也無濟于事(不過你可以試試Junit5,使用Assertions.assertEquals會產生expected: <Hello world> but was: <Helloworld> 輸出 - 但顯然不會只是提高依賴性版本)
順便說一下Eclipse與此無關,你將在其他IDE(或控制臺)中得到相同的輸出
我的建議是(不過這不是對你問題的回答),使用 AssertJ 這樣的斷言庫,它可以給你更多的控制權,也可以讓你的斷言更加流暢。
AssertJ中的一個例子是這樣的:
assertThat("Hello World").isEqualTo("HelloWorld") 。
并且正在產生
期待。
<"Hello World"/span>>
等于。
<"HelloWorld">
但事實并非如此。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/308529.html
標籤:
上一篇:Else陳述句不作業[EcpliseIDEJava]
下一篇:無法決議software.amazon.awssdk.awscore.client.builder.AwsSyncClientBuilder這一型別。
