GVKun编程网logo

Ant新手,使用JUnit的ClassNotFoundException(junit ant)

22

本篇文章给大家谈谈Ant新手,使用JUnit的ClassNotFoundException,以及junitant的知识点,同时本文还将给你拓展JUnit报错:java.lang.ClassNotFou

本篇文章给大家谈谈Ant新手,使用JUnit的ClassNotFoundException,以及junit ant的知识点,同时本文还将给你拓展JUnit 报错:java.lang.ClassNotFoundException:、Android JUnit测试ClassNotFoundException、Android测试仪器中的ClassNotFoundException、ClassNotFoundException等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

Ant新手,使用JUnit的ClassNotFoundException(junit ant)

Ant新手,使用JUnit的ClassNotFoundException(junit ant)

我已经为此花了一段时间(用Google搜索了一堆,浏览了其他相关的SO帖子都无济于事)。我有一个包含两个文件的Java程序,Logic并且TestsTests包含上百JUnit测试,我已经通过调用得到与上述试验成功率100%
javac *.java,随后java org.junit.runner.JUnitCore Tests。但是,当我build.xml用一个简单ant -verbose test的命令运行(为了跟踪输出,因为我是这一切的新手)时,我得到以下输出:

[junit] Testsuite: Tests
[junit] Tests run: 1,Failures: 0,Errors: 1,Time elapsed: 0 sec
[junit] 
[junit] Null Test:  Caused an ERROR
[junit] Tests
[junit] java.lang.ClassNotFoundException: Tests
[junit]     at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
[junit]     at java.lang.Class.forName0(Native Method)
[junit]     at java.lang.Class.forName(Class.java:247)
[junit] 
[junit] 
[junit] Test Tests FAILED

BUILD SUCCESSFUL

build.xml的如下:

<project name="ETL_Automation" default="test" basedir=".">

<path id="classpath.base">
</path>

<path id="classpath.test">
  <pathelement location="${basedir}/mysql-connector-java-5.1.18-bin.jar" />
  <pathelement location="${basedir}/junit-4.10.jar"/>
  <path refid="classpath.base" />
</path>

<target name="compile">
  <javac srcdir="${basedir}">
    <classpath refid="classpath.test"/>
  </javac>
</target>

<target name="test" depends="compile">
  <junit fork="no">
    <classpath refid="classpath.test" />
    <formatter type="brief" usefile="false" />
    <batchtest>
      <fileset dir="${basedir}/" includes="Tests.class" />
    </batchtest>
  </junit>
</target>

<target name="clean" depends="test">
  <delete>
    <fileset dir="${basedir}" includes="*.class"/>
  </delete>
</target>

目录结构非常简单。Tests.javaLogic.javajunit-4.10.jarmysql-connector- java-5.1.18-bin.jarbuild.xml,和引用的.properties文件都在同一个文件夹。Java代码引用了外部文件,但这些文件与此特定问题无关。我不知道类路径是否可能是导致此问题的原因(因为我非常确信我当前拥有的东西行不通)。

谢谢!

<Junit>JUnit 报错:java.lang.ClassNotFoundException:

JUnit 报错:java.lang.ClassNotFoundException:

最近在使用 JUnit 做单元测试时,发现新写好的测试类运行总是出错,报找不到类异常。

复制代码

Class not found com.mogodb.test.test
java.lang.ClassNotFoundException: com.mogodb.test.test
 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)
 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClass(RemoteTestRunner.java:693)
 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClasses(RemoteTestRunner.java:429)
 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452)
 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)

复制代码

  查找对应的 classes 文件夹确实乜有发现响应的 class 文件生成。

  查看项目确实选择了自动编译!

  上网查找资料,发现了如下的解决办法:

  只要把 Java--------compiler-------building-------Buil path problems ------- incomplete build path 和 Circular dependencies 改成 warning 就可以了。

 

Flag Counter

Android JUnit测试ClassNotFoundException

Android JUnit测试ClassNotFoundException

我正在尝试设置JUnit来测试我的 android项目活动.

Android项目在AVD和设备上都运行正常(还有一些bug,这就是为什么我要添加一些单元测试)

我按照这些网站的步骤(它们或多或少相同,但我仍然检查所有这些只是为了确保我做的一切正确)
http://mobile.tutsplus.com/tutorials/android/android-sdk-junit-testing/
http://developer.android.com/tools/testing/testing_eclipse.html

我使用与项目相同的工作空间创建了一个测试项目,并创建了我的第一个测试用例.当我尝试运行测试时,我得到以下内容:

[2012-12-09 19:42:56 – AssassinTest] Android Launch!
[2012-12-09 19:42:56 – AssassinTest] adb is running normally.
[2012-12-09 19:42:56 – AssassinTest] Performing android.test.InstrumentationTestRunner JUnit launch
[2012-12-09 19:42:56 – AssassinTest] Automatic Target Mode: Preferred AVD ‘Google_Level10′ is available on emulator ’emulator-5554′
[2012-12-09 19:42:56 – AssassinTest] Uploading AssassinTest.apk onto device ’emulator-5554′
[2012-12-09 19:42:57 – AssassinTest] Installing AssassinTest.apk…
[2012-12-09 19:42:59 – AssassinTest] Success!
[2012-12-09 19:42:59 – AssassinTest] Project dependency found,installing: Assassin
[2012-12-09 19:43:01 – Assassin] Application already deployed. No need to reinstall.
[2012-12-09 19:43:01 – AssassinTest] Launching instrumentation android.test.InstrumentationTestRunner on device emulator-5554
[2012-12-09 19:43:01 – AssassinTest] Collecting test information
[2012-12-09 19:43:04 – AssassinTest] Test run Failed: Instrumentation run Failed due to ‘@R_301_1610@NotFoundException’

这是我从LogCat得到的:

12-09 19:43:02.929: E/dalvikvm(1255): Unable to resolve Ludes/assassi/test/InGameActivityTest; annotation class 19
12-09 19:43:02.929: D/AndroidRuntime(1255): Shutting down VM
12-09 19:43:02.929: W/dalvikvm(1255): threadid=1: thread exiting with uncaught exception (group=0x40015560)
12-09 19:43:02.961: E/AndroidRuntime(1255): FATAL EXCEPTION: main
12-09 19:43:02.961: E/AndroidRuntime(1255): java.lang.NoClassDefFoundError: org.junit.Test
12-09 19:43:02.961: E/AndroidRuntime(1255):     at java.lang.reflect.Method.getDeclaredAnnotations(Native Method)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at java.lang.reflect.Method.getDeclaredAnnotations(Method.java:262)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at java.lang.reflect.AccessibleObject.getAnnotations(AccessibleObject.java:188)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at java.lang.reflect.AccessibleObject.getAnnotation(AccessibleObject.java:196)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at android.test.suitebuilder.TestMethod.getAnnotation(TestMethod.java:60)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at android.test.suitebuilder.annotation.HasMethodAnnotation.apply(HasMethodAnnotation.java:39)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at android.test.suitebuilder.annotation.HasMethodAnnotation.apply(HasMethodAnnotation.java:30)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at com.android.internal.util.Predicates$OrPredicate.apply(Predicates.java:106)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at android.test.suitebuilder.annotation.HasAnnotation.apply(HasAnnotation.java:42)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at android.test.suitebuilder.annotation.HasAnnotation.apply(HasAnnotation.java:31)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at com.android.internal.util.Predicates$NotPredicate.apply(Predicates.java:122)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at android.test.suitebuilder.TestSuiteBuilder.satisfiesAllPredicates(TestSuiteBuilder.java:254)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at android.test.suitebuilder.TestSuiteBuilder.build(TestSuiteBuilder.java:184)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at android.test.InstrumentationTestRunner.onCreate(InstrumentationTestRunner.java:373)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at android.app.ActivityThread.handleBindApplication(ActivityThread.java:3246)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at android.app.ActivityThread.access$2200(ActivityThread.java:117)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:969)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at android.os.Handler.dispatchMessage(Handler.java:99)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at android.os.Looper.loop(Looper.java:130)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at android.app.ActivityThread.main(ActivityThread.java:3683)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at java.lang.reflect.Method.invokeNative(Native Method)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at java.lang.reflect.Method.invoke(Method.java:507)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at dalvik.system.NativeStart.main(Native Method)
12-09 19:43:02.961: E/AndroidRuntime(1255): Caused by: @R_301_1610@NotFoundException: org.junit.Test in loader dalvik.system.PathClassLoader[/system/framework/com.google.android.maps.jar:/system/framework/android.test.runner.jar:/data/app/udes.assassin.test-1.apk:/data/app/udes.assassin-2.apk]
12-09 19:43:02.961: E/AndroidRuntime(1255):     at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at @R_301_1610@Loader.loadClass(ClassLoader.java:551)
12-09 19:43:02.961: E/AndroidRuntime(1255):     at @R_301_1610@Loader.loadClass(ClassLoader.java:511)
12-09 19:43:02.961: E/AndroidRuntime(1255):     ... 25 more

在几个论坛上搜索时,我读到这可能是由于一个糟糕的清单文件引起的,但我没有看到我的错误.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="udes.assassin.test"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk android:minSdkVersion="10" />

<instrumentation
    android:name="android.test.InstrumentationTestRunner"
    android:targetPackage="udes.assassin" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <uses-library android:name="android.test.runner" />
</application>
</manifest>

最后,这是我唯一的JUnit类中的代码(到目前为止)

package udes.assassin.test;
import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.Test;
import udes.assassin.InGameActivity;
import android.test.ActivityInstrumentationTestCase2;

public class InGameActivityTest 
        extends ActivityInstrumentationTestCase2<InGameActivity> {

    public InGameActivitytest() {
        super("udes.assassin",InGameActivity.class);
    }

    public InGameActivityTest(Class<InGameActivity> activityClass) {
        super(activityClass);
    }

    @Before
    protected void setUp() throws Exception {
        super.setUp();
    }

    @Test
    public void testSetItemPosition() {
        fail("Not yet implemented");
    }
}

谢谢

解决方法

这可能是因为JUnit不在您的类路径中.转到项目 – >属性 – > Java构建路径 – > Order and Export并检查是否取消选中JUnit框.

Android测试仪器中的ClassNotFoundException

Android测试仪器中的ClassNotFoundException

我已经看到许多处理此错误的主题,但无法找到可行的解决方案.所以我会试着完全描述这个问题.

我有一个项目和一个项目测试.我的项目清单:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.toto.app"
  android:versionCode="3"
  android:versionName="0.3.1">
  ...
    <application android:icon="@drawable/icon" android:label="@string/app_name">
    ...
    </application>
</manifest>

我的测试项目显示:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.toto.app.test"
  android:versionCode="1"
  android:versionName="1.0">
  <uses-sdk android:minSdkVersion="4" />

  <instrumentation android:targetPackage="com.toto.app" android:name="android.test.InstrumentationTestRunner" />

  <application android:icon="@drawable/icon" android:label="@string/app_name">
    <uses-library android:name="android.test.runner" />
  </application>
</manifest>

这是我要测试的活动:src / com / toto / app / activity / ListActivity,我有一个启动此活动的LaunchActivity(在清单中声明为启动活动).

在测试中,我的ListActivityTest位于相同的路径中(src / com / toto / app / activity).我也试过src / com / toto / app / test.来源是:

public class ListActivityTest extends  ActivityInstrumentationTestCase2<LaunchActivity>{

  private Solo solo;

  public ListActivitytest() {
    super(LaunchActivity.class);
  }

  public void setUp() throws Exception {
    solo = new Solo(getInstrumentation(),getActivity());
    solo.wait(2000);
  } 
}

似乎找到了LaunchActivity但是当它启动ListActivity时,我得到了错误:

% adb shell am instrument -w com.toto.app.test/android.test.InstrumentationTestRunner

com.toto.app.activity.ListActivityTest:INSTRUMENTATION_RESULT: shortMsg=java.lang.classNotFoundException
INSTRUMENTATION_RESULT: longMsg=java.lang.classNotFoundException: com.toto.app.activity.ListActivity in loader dalvik.system.PathClassLoader[/system/framework/android.test.runner.jar:/data/app/com.toto.app.test-2.apk:/data/app/com.toto.app-2.apk]

我不明白为什么找到一个类而另一个不是……它在Eclipse中以同样的方式失败.我试图在测试用例中直接使用ListActivity但是同样的错误.它如何构建这个apk以避免某些类?

这是使用adb时的完整堆栈.

eclipse logcat中的完整堆栈:

java.lang.NoClassDefFoundError: com.toto.app.activity.ListActivity
 at com.toto.app.activity.LaunchActivity.onCreate(LaunchActivity.java:19)
 at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1072)
 at android.app.ActivityThread.performlaunchActivity(ActivityThread.java:1794)
 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1851)
 at android.app.ActivityThread.access$1500(ActivityThread.java:132)
 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1038)
 at android.os.Handler.dispatchMessage(Handler.java:99)
 at android.os.Looper.loop(Looper.java:143)
 at android.app.ActivityThread.main(ActivityThread.java:4293)
 at java.lang.reflect.Method.invokeNative(Native Method)
 at java.lang.reflect.Method.invoke(Method.java:507)
 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
 at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.classNotFoundException: com.toto.app.activity.ListActivity in loader dalvik.system.PathClassLoader[/system/framework/android.test.runner.jar:/data/app/com.toto.app.test-2.apk:/data/app/com.toto.app-1.apk]
 at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
 at java.lang.classLoader.loadClass(ClassLoader.java:551)
 at java.lang.classLoader.loadClass(ClassLoader.java:511)
 ... 14 more

解决方法

这是因为我的活动扩展了FragmentActivity,而不是简单的Activity.

要解决这个问题,我必须在主项目中导出android-support-v4.jar.

希望能帮助别人……

ClassNotFoundException

ClassNotFoundException

代码报错:

java.lang.ClassNotFoundException: com.tujia.core.filter.SecurityFilter
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
	at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:527)
	at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:509)
	at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:137)
	at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:260)
	at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:107)
	at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4775)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5452)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
	at java.util.concurrent.FutureTask.run(FutureTask.java:262)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:745)


找不到类,但是,在我的代码中,并没有这个类的引用。

用 eclipse 的全局搜索,发现,在 web.xml 中,有注释,

<filter><!-- com.tujia.core.filter.SecurityFilter -->
		<filter-name>securityFilter</filter-name>
		<filter-class>com.tujia.corelogin.filter.SecurityFilter</filter-class>
		<init-param>
			<param-name>ignores</param-name><!-- /tbk, -->
			<param-value>/app/appNavs,/app/download,/tulogin,/tulogout,/static,/noauthority,/img/select</param-value>
		</init-param>
		<!-- <init-param> 
			<param-name>checks</param-name>/tbk,
			<param-value>/,/app/,/video/</param-value>
		</init-param> -->
	</filter>
	
	 <filter-mapping>
		<filter-name>securityFilter</filter-name>
		<url-pattern>*</url-pattern>
	</filter-mapping>
这句话是我已经注释掉的,但是,在 xml 中,并不是不编译,而是编译不执行,所以,会报错 classnotfound.
<!-- com.tujia.core.filter.SecurityFilter -->
类似的这种问题,在 jsp,xml 中,会有很多,因为在这些文件中,注释并不代表不编译。希望以后注意一下。

我们今天的关于Ant新手,使用JUnit的ClassNotFoundExceptionjunit ant的分享就到这里,谢谢您的阅读,如果想了解更多关于JUnit 报错:java.lang.ClassNotFoundException:、Android JUnit测试ClassNotFoundException、Android测试仪器中的ClassNotFoundException、ClassNotFoundException的相关信息,可以在本站进行搜索。

本文标签: