Java 测试JUnit中的字符序列是否相等

Java 测试JUnit中的字符序列是否相等,java,junit,Java,Junit,以下测试已成功运行: assertEquals(a.toString(), b.toString()); 以下情况不适用: assertEquals(a, b); a是StringBuilder,而b是不同类型的CharSequence 是否有某种方法可以测试CharSequences是否相等,而不首先将其转换为Strings?您可以使用CharBuffers: assertEquals(CharBuffer.wrap(a), CharBuffer.wrap(b)); CharBuffer

以下测试已成功运行:

assertEquals(a.toString(), b.toString());
以下情况不适用:

assertEquals(a, b);
a
StringBuilder
,而
b
是不同类型的
CharSequence


是否有某种方法可以测试
CharSequence
s是否相等,而不首先将其转换为
String
s?

您可以使用
CharBuffer
s:

assertEquals(CharBuffer.wrap(a), CharBuffer.wrap(b));
CharBuffer
的.equals的javadoc保证:

Tells whether or not this buffer is equal to another object.

Two char buffers are equal if, and only if,

    They have the same element type,

    They have the same number of remaining elements, and

    The two sequences of remaining elements, considered independently of their starting positions, are pointwise equal.

除了逐一比较长度和所有字符外,没有。。。当然,如果您使用Java8,您会有一个更简单的解决方案time@fge我希望JUnit已经有了一个assert方法,可以准确地完成这项工作,比较长度,然后比较字符。@fredoverflow好的,我使用TestNG,所以我不能真正地告诉您。。。然而,assertj有相应的方法。但是请看我的答案。@fredoverflow你是对的,对不起。@fredoverflow顺便说一句,我确认assertj确实对CharSequence有断言;所以,如果你不反对添加额外的库。。。Assertj真的很不错,我个人会推荐它,但决定权在你:)