代码之家  ›  专栏  ›  技术社区  ›  Fritz H

CruiseControl JUnit测试结果显示所有零

  •  0
  • Fritz H  · 技术社区  · 15 年前

    我已经将JUnit与CruiseControl连接起来,并且正在执行单元测试并导入日志,但CruiseControl显示以下输出:

    nz.co.picksend.core.tests.nz.co.picksend.core.dal.FilterTests 
    Tests: 0, Failures: 0, Errors: 0, Duration: 0.0
    nz.co.picksend.core.tests.nz.co.picksend.core.dal.ModelObjectRegistryTests 
    Tests: 0, Failures: 0, Errors: 0, Duration: 0.0
    nz.co.picksend.core.tests.nz.co.picksend.core.dal.ModelObjectSetTests 
    Tests: 0, Failures: 0, Errors: 0, Duration: 0.0
    nz.co.picksend.core.tests.nz.co.picksend.core.humanresources.AllHumanResourcesTests 
    Tests: 0, Failures: 0, Errors: 0, Duration: 0.0
    

    (注意所有零)

    但是,正在合并的日志文件如下所示:

    <?xml version="1.0" encoding="UTF-8" ?>
    <testsuite errors="1" failures="0" hostname="maudslay"
        name="nz.co.picksend.core.tests.nz.co.picksend.core.rules.MockEvalRule" tests="1"
        time="0.0" timestamp="2009-11-04T23:05:19">
    <properties>
        ...
    </properties>
    <error message="nz.co.picksend.core.tests.nz.co.picksend.core.rules.MockEvalRule"
        type="java.lang.ClassNotFoundException">
    java.lang.ClassNotFoundException:
        nz.co.picksend.core.tests.nz.co.picksend.core.rules.MockEvalRule
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:169)
    </error>
    <system-out><![CDATA[]]></system-out>
    <system-err><![CDATA[]]></system-err>
    </testsuite>
    

    以下是Ant build.xml中的片段:

    <target name="test">
        <junit errorProperty="test.failed" failureProperty="test.failed">
        <formatter type="brief" usefile="false" />
            <formatter type="xml" />
            <batchtest todir="${buildresults.dir}">
                <fileset dir="${basedir}">
                    <include name="nz.co*/**/tests/**/*.java" />
                    <include name="nz.co*/**/test/**/*.java" />
                </fileset>
            </batchtest>
        </junit>
    <fail message="Tests failed: check test reports." if="test.failed" />
    </target>
    

    最后,下面是CruiseControl的config.xml中的项目片段:

    <project requiremodification="false" name="Pick and Send">
        <modificationset QuietPeriod="30">
            ....
        </modificationset>
        <schedule Interval="300" ShowProgress="true">
            <ant AntWorkingDir="E:\Build\PickSend2" 
            BuildFile="E:\Build\PickSend2\build.xml" 
            Time="0400" Target="bat" anthome="apache-ant-1.7.0" />
        </schedule>
        <log>
            <merge Dir="E:\Build\PickSend2\buildresults" />
        </log>
        <bootstrappers>
            ....
        </bootstrappers>
    </project>
    

    以前有人遇到过这种情况吗?

    1 回复  |  直到 15 年前
        1
  •  0
  •   Fritz H    15 年前

    这是因为单元测试抛出了一个错误,而不是在测试本身,而是在测试的设置中。出于某种原因,CruiseControl无法捕捉到这一点。