代码之家  ›  专栏  ›  技术社区  ›  Itsik Mauyhas

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

  •  3
  • Itsik Mauyhas  · 技术社区  · 6 年前

    我想比较两个字符串 assertEquals 使用 JUnit 4 , Java 8 ,检查解密功能,因此:

    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"]>
    

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

    2 回复  |  直到 6 年前
        1
  •  0
  •   Bob Jacobsen    6 年前

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

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

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

    • 那些引语是 应为返回值的一部分:测试失败,因为它 应该 如果失败,则必须修复decryptToken例程,以便它返回正确的结果。

    其中哪一项取决于 decutils.decrypttoken ,但请注意,您应该只做一个!

        2
  •  0
  •   Yorgos Lamprakis    6 年前

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

    import static org.hamcrest.CoreMatchers.equalTo;
    import static org.junit.Assert.*;  
    
    
    assertThat("encrypt expected value", equalTo("encrypt expected value"));