我的设置:

  Netbeans 6.7
  Java6
  JUnit 4.5 added as the Test libraries


当我尝试传递两个类数组(以Object []形式广播)时,出现错误“找不到符号”,并且我的测试用例无法编译。

我对其他assert语句没有问题,正如我所说的,我正在使用JUnit 4.5库。

有谁知道如何解决这个问题,或者观察到这种古怪的行为?

Netbeans能够通过其自动完成功能找到此函数声明,但无法找到其位置或无法导航到源。

样例代码:

CustomObject[] coa = { new CustomObject() ....}
CustomObject[] expected = { new CustomObject() ... }
assertArrayEquals((Object[])coa, (Object[])expected);

最佳答案

好吧,Assert.assertArrayEquals是一个静态方法,如您从起作用的代码中所看到的:

 org.junit.Assert.assertArrayEquals(....)


但是在您提供的代码中,您试图将其用作实例方法:

 assertArrayEquals((Object[])coa, (Object[])expected);


仅当您静态导入Assert.*Assert.assertArrayEquals时,这才起作用。

现在,如果您的其他断言有效,我的猜测是您仍然是从TestCase派生的(即编写JUnit测试的“旧”方式),并且您的断言正在调用TestCase.assertEquals等。

如果您可以给出一个简短而完整的单元测试示例,其中一个断言有效,而assertArrayEquals则无效,我们可能可以弄清楚发生了什么。

10-04 10:39