java - junit AssertionFailedError 与内存地址

标签 java junit

我是单元测试新手。我正在测试一个“标记” String 的函数。 String是一个数学表达式。这是我的代码:

@Test
public void testTokenizer() throws InvalidExpressionException {

    final String QUERY = "sin(x) / 5*x";
    final String[] EXPECTED = {"x", "sin", "5", "x", "*", "/"};
    parser.parse(QUERY);
    final String[] actual = parser.getTokens().toArray(new String[parser.getTokens().size()]);

    Assertions.assertEquals(EXPECTED, actual);
}

这是我得到的错误:

org.opentest4j.AssertionFailedError: 
Expected :[Ljava.lang.String;@62043840
Actual   :[Ljava.lang.String;@5315b42e

我使用的是junit5。看起来这些是内存地址(我是初学者)。 我是否做出了错误的断言(比较指针或其他东西)?

最佳答案

使用Assert.assertArrayEquals进行数组比较,您正在比较对象的ID

import org.junit.Assert;

@Test
public void testTokenizer() throws InvalidExpressionException {

    final String QUERY = "sin(x) / 5*x";
    final String[] EXPECTED = {"x", "sin", "5", "x", "*", "/"};
    parser.parse(QUERY);
    final String[] actual = parser.getTokens().toArray(new String[parser.getTokens().size()]);

    Assert.assertArrayEquals( EXPECTED, actual );
}

关于java - junit AssertionFailedError 与内存地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44468159/

相关文章:

java - 如何使用Java读取电子邮件中的 Logo 和图像,其中电子邮件的内容是html/纯文本

java - Spring:如何针对多个数据源测试同一个类?

java - 如何使用 JUnit 在 H2 数据库中使用 "on update CURRENT_TIMESTAMP"?

java - 如何根据 JUnit 中的测试大小对测试进行分类

java - 究竟什么是对象?这里的对象在哪里?

Java - Oracle - XML 时区

java - 如何在 java 中使用 mockito 测试文件大小?

java - JUnit 测试事务方法

java - 每次我实例化新对象时,属性都会回到零

Java 字符串换行 :How do I wrap words in a String at New line character(\n)