Junit 失败 - 字符串比较中的引号

Junit fails- quotes in String comparing

我正在尝试使用 JUnit 4Java 8 比较 assertEquals 中的 2 个字符串,以检查解密功能,因此:

String data = "veryLongEncryptedString.....";
String value = DecUtils.decryptToken(data, null); //returns String
assertEquals("Here User name: ", "encrypt expected value", value);

两个值相等,但控制台显示其中一个被引用:

org.junit.ComparisonFailure: Here is test for Addition Result:  expected:<[xxx]> but was:<["xxx"]>

如何使两个值都被引用或不被引用? 谢谢。

How do make both values quoted or unquoted?

assertEquals 测试的想法是将准确的预期值与方法的输出进行比较。这里,DecUtils.decryptToken 提供了一个 已经 包含 打开和关闭引号的字符串。所以你有两个选择:

  • 这些引号应该是 return 值的一部分,因此您应该将测试字符串更改为正确的预期值: String data = "\"veryLongEncryptedString.....\"";

  • 这些引用 不是 预期作为 return 值的一部分:测试失败,因为它 应该 失败,您必须修复 decryptToken 例程,以便它 return 是正确的结果。

具体执行哪一项取决于 DecUtils.decryptToken 的文档,但请注意,您应该只执行一项!

由于上述原因,AssertEqual 将不起作用。 对于字符串比较,我使用的是 hamcrest,它可以用于如下断言:

import static org.hamcrest.CoreMatchers.equalTo;
import static org.junit.Assert.*;  


assertThat("encrypt expected value", equalTo("encrypt expected value"));

在不使用任何库的情况下,您可以创建一个预期的字符串并断言

String result = "xxx";
assertEquals(value, "\"" + result + "\"");