Eclipse JUnit assertEquals(String, String) - 在失败跟踪中禁用方括号差异
Eclipse JUnit assertEquals(String, String) - disable square bracket diff in Failure Trace
JUnit assertEquals Changes String
简而言之:assertEquals("Hello World", "HelloWorld");
在失败跟踪中显示为 expected:<Hello[ ]World> but was:<Hello[]World>
伟大的。绝对没有浪费我的时间去弄清楚为什么我的解析器会随机地乱扔方括号。
如何禁用它?
我正在为 Java、JUnit 4.10 使用 Eclipse 4.19.0。
你不能。
这些括号由 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= "[";
// ...
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");
正在生产
Expecting:
<"Hello World">
to be equal to:
<"HelloWorld">
but was not.
JUnit assertEquals Changes String
简而言之:assertEquals("Hello World", "HelloWorld");
在失败跟踪中显示为 expected:<Hello[ ]World> but was:<Hello[]World>
伟大的。绝对没有浪费我的时间去弄清楚为什么我的解析器会随机地乱扔方括号。
如何禁用它?
我正在为 Java、JUnit 4.10 使用 Eclipse 4.19.0。
你不能。
这些括号由 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= "[";
// ...
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");
正在生产
Expecting:
<"Hello World">
to be equal to:
<"HelloWorld">
but was not.