Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Testing 使用cpsuite运行JMockit_Testing_Ant_Junit_Jmockit - Fatal编程技术网

Testing 使用cpsuite运行JMockit

Testing 使用cpsuite运行JMockit,testing,ant,junit,jmockit,Testing,Ant,Junit,Jmockit,我们在使用CPsuite和JMockit运行单元测试时遇到问题 在Eclipse中执行测试时运行良好,但如果我们使用Ant脚本运行所有测试(请参阅本问题末尾的脚本),则会出现以下异常: Testcase: initializationError took 0 sec Caused an ERROR (class: mockit/internal/startup/JDK6AgentLoader, method: getVirtualMachineImplementationFromEmbe

我们在使用CPsuite和JMockit运行单元测试时遇到问题

在Eclipse中执行测试时运行良好,但如果我们使用Ant脚本运行所有测试(请参阅本问题末尾的脚本),则会出现以下异常:

Testcase: initializationError took 0 sec
    Caused an ERROR
(class: mockit/internal/startup/JDK6AgentLoader, method: getVirtualMachineImplementationFromEmbeddedOnes signature: ()Lcom/sun/tools/attach/VirtualMachine;) Wrong return type in function
java.lang.VerifyError: (class: mockit/internal/startup/JDK6AgentLoader, method: getVirtualMachineImplementationFromEmbeddedOnes signature: ()Lcom/sun/tools/attach/VirtualMachine;) Wrong return type in function
    at mockit.internal.startup.AgentInitialization.initializeAccordingToJDKVersion(AgentInitialization.java:21)
    at mockit.internal.startup.Startup.verifyInitialization(Startup.java:86)
    at mockit.Invocations.<clinit>(Invocations.java:22)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:169)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
Testcase:初始化错误花费了0秒
造成错误
(类:mockit/internal/startup/JDK6AgentLoader,方法:GetVirtualMachine从EmbeddedOne实现签名:()Lcom/sun/tools/attach/VirtualMachine;)函数中的返回类型错误
java.lang.VerifyError:(类:mockit/internal/startup/JDK6AgentLoader,方法:getVirtualMachineImplementationFromEmbeddedOnes签名:()Lcom/sun/tools/attach/VirtualMachine;)函数中的返回类型错误
在mockit.internal.startup.agentinization.initializeaccordingJDKVersion(agentinization.java:21)中
在mockit.internal.startup.startup.verifyInitialization(startup.java:86)中
调用(Invocations.java:22)
位于java.lang.Class.forName0(本机方法)
位于java.lang.Class.forName(Class.java:169)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:513)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:513)
这仅在Ant上发生,并且仅当CPSuite集中存在使用JMockit的类时才会发生

有人知道我们为什么会犯这个错误吗

Ant脚本:

<project name="chughtai.junit" default="run" basedir=".">

    <taskdef resource="net/sf/antcontrib/antlib.xml"/>

    <!-- https://junit-anttask.dev.java.net/ -->
    <!--
    <taskdef name="junit2" classname="com.sun.ant.junit.JUnitTask">
        <classpath>
            <pathelement path="lib/junit-anttask.jar" />
            <pathelement path="lib/junit-4.4.jar" />
        </classpath>
    </taskdef>
    -->
    <property environment="env"/>

    <property file="junit.build.properties"/>

    <filelist id="third-party_jars" dir="lib">
        <file name="${ext.classpath}/bin/lib/j2ee.jar"/>
    </filelist>

    <path id="project.path">
      <pathelement path="${env.JAVA_HOME}/lib/tools.jar"/>
      <pathelement location="classes/"/>
      <fileset dir="lib">
        <include name="**/*.jar"/>
        <include name="**/*.properties"/>       
      </fileset>
      <dirset dir="${build.dir}">
        <include name="apps/**/classes"/>
        <exclude name="apps/**/*Test*"/>
      </dirset>
      <pathelement location="${basedir}/junittestcases"/>     
      <filelist refid="third-party_jars"/>
      <pathelement path="${ext.classpath}"/>
      <pathelement location="${ext.classpath}/WEB-INF/classes"/>      
    </path>

    <target name="init">
        <mkdir dir="${prd.junit.test.report.dir}" />
        <mkdir dir="${prd.junit.test.report.dir}/html" />
    </target>

    <!-- default target -->
    <target name="run" depends="init">
        <property name="myclasspath" refid="project.path"/>
        <property name="java.class.path" refid="project.path"/>

        <echo message="***Junit Controller Application***"/>    
        <echo message="basedir is ${basedir}"/> 
        <!--<echo message="${myclasspath}" />-->

    <junit dir="${basedir}/junittestcases/" printsummary="yes" haltonfailure="no" fork="no" forkmode="once" reloading="false" maxmemory="1024m">
        <jvmarg value="-Xms768M"/>
        <jvmarg value="-Xmx1024M"/>     
        <jvmarg value="-XX:MaxPermSize=256M"/>
        <sysproperty key="tests" value="${tests}"/>
        <sysproperty key="java.class.path" value="${myclasspath}"/>
        <formatter type="plain" usefile="true" extension=".txt" />
        <formatter type="xml" />
        <classpath refid="project.path"/>

        <test name="${use.testcase}" haltonfailure="no" fork="false" todir="${prd.junit.test.report.dir}" if="use.testcase">
            <formatter type="xml" />
        </test>



    </junit>
        <!--  Generate the Unit Test reports -->

    <junitreport todir="${prd.junit.test.report.dir}">
      <fileset dir="${prd.junit.test.report.dir}">
        <include name="*.xml" />
      </fileset>
      <report todir="${prd.junit.test.report.dir}/html"  styledir="${xsl.templates}" format="frames"> 
        <param name="build.number" expression="${app.build}" />
        <param name="application.name" expression="${app.name}" />
      </report>
    </junitreport>

    </target>

    <target name="emma.report" depends ="" description="Creates 3 EMMA report formats based on the coverage data gathered.">
        <if>
            <available file="coverage.ec" />
            <then>
                <move file="coverage.ec" tofile="${coverage.dir}/junits.ec" overwrite="true"/>
            </then>     
        </if>

        <emma>
            <report sourcepath="src" sort="+block,+name,+method,+class" metrics="method:70,block:80,line:80,class:100">
                <!-- collect all EMMA data dumps (metadata and runtime)
                 [this can be done via nested <fileset> fileset elements
                 or <file> elements pointing to a single file]:
                -->

                <fileset dir="${coverage.dir}">
                    <include name="*.em" />
                    <include name="*.ec" />
                </fileset>

                <!-- for every type of report desired, configure a nested
                 element; various report parameters
                 can be inherited from the parent <report>
                 and individually overridden for each report type:
                -->
                <txt outfile="${coverage.dir}/coverage.txt" depth="package" columns="class,method,block,line,name" />
                <xml outfile="${coverage.dir}/coverage.xml" depth="package" />
                <html outfile="${coverage.dir}/coverage.html" depth="method" columns="name,class,method,block,line" />
            </report>
        </emma>

    </target>

    <target name="clean">
        <delete file="${coverage.dir}/coverage.*" />
    </target>
</project>

您是如何解决这个问题的?