Java 如何在daikon中运行程序的junit测试?
当我从命令行键入Java 如何在daikon中运行程序的junit测试?,java,junit,Java,Junit,当我从命令行键入java daikon.DynComp org.junit.runner.JUnitCore或java daikon.Chicory org.junit.runner.JUnitCore时,我总是得到以下结果: JUnit版本4.12 Exception in thread "main" java.lang.AssertionError: Too many parameters for an annotation method at sun.reflect.annotat
java daikon.DynComp org.junit.runner.JUnitCore
或java daikon.Chicory org.junit.runner.JUnitCore
时,我总是得到以下结果:
JUnit版本4.12
Exception in thread "main" java.lang.AssertionError: Too many parameters for an annotation method
at sun.reflect.annotation.AnnotationInvocationHandler.invoke(AnnotationInvocationHandler.java:66)
at com.sun.proxy.$Proxy0.annotationType(Unknown Source)
at sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:122)
at sun.reflect.annotation.AnnotationParser.parseSelectAnnotations(AnnotationParser.java:101)
at sun.reflect.annotation.AnnotationType.<init>(AnnotationType.java:145)
at sun.reflect.annotation.AnnotationType.getInstance(AnnotationType.java:85)
at sun.reflect.annotation.AnnotationParser.parseAnnotation2(AnnotationParser.java:266)
at sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:120)
at sun.reflect.annotation.AnnotationParser.parseAnnotations(AnnotationParser.java:72)
at java.lang.Class.createAnnotationData(Class.java:3521)
at java.lang.Class.annotationData(Class.java:3510)
at java.lang.Class.getAnnotation(Class.java:3415)
at java.lang.reflect.AnnotatedElement.isAnnotationPresent(AnnotatedElement.java:258)
at java.lang.Class.isAnnotationPresent(Class.java:3425)
at org.junit.runner.notification.RunNotifier.wrapIfNotThreadSafe(RunNotifier.java:50)
at org.junit.runner.notification.RunNotifier.addFirstListener(RunNotifier.java:212)
at org.junit.runner.JUnitCore.run(JUnitCore.java:134)
at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
at org.junit.runner.JUnitCore.runMain(JUnitCore.java:77)
at org.junit.runner.JUnitCore.main(JUnitCore.java:36)
线程“main”java.lang.AssertionError中的异常:注释方法的参数太多
位于sun.reflect.annotation.AnnotationInvocationHandler.invoke(AnnotationInvocationHandler.java:66)
位于com.sun.proxy.$Proxy0.annotationType(未知源)
位于sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:122)
位于sun.reflect.annotation.AnnotationParser.parseSelectAnnotations(AnnotationParser.java:101)
位于sun.reflect.annotation.AnnotationType。(AnnotationType.java:145)
位于sun.reflect.annotation.AnnotationType.getInstance(AnnotationType.java:85)
位于sun.reflect.annotation.AnnotationParser.parseAnnotation2(AnnotationParser.java:266)
位于sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:120)
位于sun.reflect.annotation.AnnotationParser.parseAnnotations(AnnotationParser.java:72)
位于java.lang.Class.createAnnotationData(Class.java:3521)
位于java.lang.Class.annotationData(Class.java:3510)
位于java.lang.Class.getAnnotation(Class.java:3415)
位于java.lang.reflect.AnnotationDelement.isAnnotationPresent(annotationDelement.java:258)
位于java.lang.Class.isAnnotationPresent(Class.java:3425)
位于org.junit.runner.notification.RunNotifier.wrapIfNotThreadSafe(RunNotifier.java:50)
位于org.junit.runner.notification.RunNotifier.addFirstListener(RunNotifier.java:212)
位于org.junit.runner.JUnitCore.run(JUnitCore.java:134)
位于org.junit.runner.JUnitCore.run(JUnitCore.java:115)
位于org.junit.runner.JUnitCore.runMain(JUnitCore.java:77)
位于org.junit.runner.JUnitCore.main(JUnitCore.java:36)
此外,当我尝试在daikon中运行其他程序并将junit作为代码的一部分时,同样的错误总是会发生。我该怎么办?这是一个已经过的测试用例。请给出一个具体的、可复制的测试用例。显示完整的命令行(包括类路径)并提供重现问题所需的所有文件。我所拥有的只是目录中的junit-4.12.jar文件,以及完全安装的daikon 5.6.4(并将daikon添加到类路径)。我的完整命令行是“java-cp.:$CLASSPATH daikon.DynComp org.junit.runner.JUnitCore”。
在您的路径上,不会拾取该目录中的junit-4.12.jar
文件。您是否犯了错误,或者
不是必需的?另外,请给出准确的类路径。@mernst对不起,我的完整命令实际上是“java-cp:$classpath:junit-4.12.jar daikon.DynComp org.junit.runner.JUnitCore”,junit-4.12.jar在当前目录中。我的完整$CLASSPATH是“/home/lvyiwei1/daikon-5.6.4/daikon.jar:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/rt.jar:/usr/lib/jvm/java-1.8.0-openjdk-amd64/lib/tools.jar”,当我尝试这个方法时,我得到了一个错误“在类路径上找不到dcomp_premain.jar,并且$DAIKONDIR没有设置。”因此,您需要设置DAIKONDIR或将另一个文件放在当前目录中。(当我这么做的时候,我终于可以重现你的问题了。)然而,还有一个更重要的问题:基本命令(没有Daikon)不起作用。我试图运行java-cp.:$CLASSPATH:junit-4.12.jar org.junit.runner.JUnitCore
,得到java.lang.NoClassDefFoundError:org/hamcrest/selfdescription
。在您尝试添加Daikon之前,需要使用base命令。请修复CLASSPATH或-cp
参数。