gpt4 book ai didi

java - Android 单元测试在日志中抛出 NoClassDefFoundError

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:01:43 25 4
gpt4 key购买 nike

当我尝试在 eclipse 中运行我的单元测试项目时,出现了 java.lang.NoClassDefFoundError: android/util/Log 错误。

经过提炼,我的测试代码如下所示:

package com.randomtype.yycparking;

import junit.framework.TestCase;
import android.util.Log;

public class StallTests extends TestCase {
public void setUp() {
Log.v("HI", "Fail");
}

public void testShouldParseIdFromTitle() {
assertTrue(true);
}
}

代码在 Log.v 调用中抛出异常。当我正常运行 android 项目时,Log 没有出现任何异常。

完整堆栈跟踪:

java.lang.NoClassDefFoundError: android/util/Log
at com.randomtype.yycparking.StallTests.setUp(StallTests.java:11)
at junit.framework.TestCase.runBare(TestCase.java:132)
at junit.framework.TestResult$1.protect(TestResult.java:110)
at junit.framework.TestResult.runProtected(TestResult.java:128)
at junit.framework.TestResult.run(TestResult.java:113)
at junit.framework.TestCase.run(TestCase.java:124)
at junit.framework.TestSuite.runTest(TestSuite.java:243)
at junit.framework.TestSuite.run(TestSuite.java:238)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.lang.ClassNotFoundException: android.util.Log
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
... 14 more

正如 dtmilano 所指出的,我没有将单元测试作为 Android JUnit 测试 来运行。你怎么能分辨出区别?寻找下图中的小a:

Screen shot of a beside JUnit icon
(来源:skitch.com)

最佳答案

您的测试应该在一个单独的 Android 测试项目中(项目 -> Android 工具 -> 新的 Android 项目)并且您应该将它们作为 Android JUnit 测试运行(运行方式 -> Android JUnit 测试).

关于java - Android 单元测试在日志中抛出 NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8825894/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com