我是单元测试新手。我正在测试一个“标记” 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/