34

我是 Java 新手,正在尝试对我正在编写的类运行单元测试。Eclipse (3.5) 为我创建了单元测试类并将 Junit4 添加到我的类路径中。

我的课:

public class DistanceUtil 
{

public static double metersToMiles( double meters ) 
{
    return 0;
}
public static double metersToKilometers( double meters ) 
{
    return 0;
}

}

我的单元测试:

public class DistanceUtilTest {

@Test
public final void testMetersToMiles() {
    fail("Not yet implemented"); // TODO
}

@Test
public final void testMetersToKilometers() {
    fail("Not yet implemented"); // TODO
}

}

当我右键单击单元测试并选择作为 Junit Test 运行时,我得到以下信息:

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (classFileParser.cpp:3075), pid=5564, tid=4940
#  Error: ShouldNotReachHere()
#
# JRE version: 6.0_17-b04
# Java VM: Java HotSpot(TM) Client VM (14.3-b01 mixed mode windows-x86 )
# An error report file with more information is saved as:
# C:\Users\Giles Roadnight\workspaceAndroid\Cycloid\hs_err_pid5564.log
#
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
#

有人知道我该如何解决这个问题吗?

谢谢

4

2 回答 2

54

在 Google 上搜索了答案后,这看起来可能与 Android 开发工具有关。

以下是从此评论线程中采取的步骤:

  1. 右键项目->运行->运行配置
  2. 选择您的 Junit 项目
  3. 转到类路径选项卡
  4. 删除 Android 框架条目
  5. 选择引导条目
  6. 点击高级
  7. 选择添加库
  8. 选择“JRE 系统库”
  9. 下一个
  10. 结束
  11. 您还需要添加 JUnit 库,因此请按照步骤 5 到 11 并选择“Junit”而不是“JRE System Library”
  12. 您现在可以以 Junit 身份运行您的项目。
于 2010-01-31T15:18:57.817 回答
1

由于 Alex Spurling 的说明不再适用于 Eclipse Juno 和最新的 Android SDK,因此提供另一种替代方法可能会很有用:

  1. 创建一个单独的普通 Java 库项目,其中包含所有不依赖于 Android 平台的代码。
  2. 正常编写 JUnit 测试。
  3. 将该项目作为库引用包含到您的 Android 项目中。
  4. 使用 SLF4J 或其他高级库进行日志记录。

这对小型项目有点麻烦,但 OTOH 它有助于强制执行模块化和接口隔离。

于 2013-11-13T12:09:21.233 回答