0

运行 gradle 构建。

编译工作正常,但在 :test 任务期间出现错误,即测试失败。

输出是:

com.tr.ids.biz.domain.TestAttributeDescriptorBeanProvider > testGetAttributeHandler FAILED
    java.lang.AssertionError at TestAttributeDescriptorBeanProvider.java:65

com.tr.ids.biz.domain.TestAttributeDescriptorBeanProvider > testGetSpringBeanWithExp FAILED
    java.lang.AssertionError at TestAttributeDescriptorBeanProvider.java:60




com.tr.ids.biz.domain.pvt.dao.TestRdbmsDAOFactory > testCreateDAO FAILED
    java.lang.AssertionError at TestRdbmsDAOFactory.java:90

83 tests completed, 3 failed
:test FAILED

如果您看到前 2 个失败的测试,则说明 Java fail() 失败,并且这些行的源代码 Java 文件快照是(忽略 line#,因为我使用了 can -n 命令)。第 60 行和第 65 行给出了错误。我尝试将第 60 + 61 + 62 行作为第 60 行加入一行,在 gradle 构建时出现同样的错误:

-bash-3.2$ cat -n test/java/com/tr/ids/biz/domain/TestAttributeDescriptorBeanProvider.java | egrep " *6[0-9]|70"

60                          fail(BASE_NAME + ": Failed in 'setUp()' method: "
61                                          + exp.getMessage()
62                                          + exp.getCause());
63                  } catch (SvcMockLibException exp) {
64
65                          fail(BASE_NAME + ": Failed in 'setUp()' method: "
66                                          + exp.getMessage()
67                                          + exp.getCause());
68                  }
69
70          }

-bash-3.2$

同样,第 90 行的第二个文件(显示下面的第 90、91、92 行)失败并包含以下代码:

assertEquals(
        "Test1: Returned bean is not instance of RdbmsAttributeDescriptorDAO",
        true, flag);

任何想法,为什么 assertEquals() 和 fail () 都失败了。

使用 ANT 编译的相同源代码可以正常工作并且不会出现这些错误。

执行单元测试部分的 ANT 代码是:

  <!-- Execute the UNIT tests -->
  <target name="test-junit" depends="init,classpaths,classpath-junit,compile-junit" >
    <property name="test.junit.reports" value="junit-test-reports" />
    <delete dir="${test.junit.reports}" />
    <mkdir dir="${test.junit.reports}" />
    <mkdir dir="${test.junit.reports}/xml" />

    <junit printsummary="yes" haltonfailure="no" failureproperty="build.test.failure" >
      <batchtest todir="${test.junit.reports}/xml" >
        <fileset dir="${build.junit.classes}">
          <include name="**/Test*.class" />
        </fileset>
      </batchtest>
      <classpath>
        <pathelement path="${test-junit.classpath}" />
      </classpath>
      <formatter type="xml" />
    </junit>
    <junitreport todir="${test.junit.reports}" >
      <fileset dir="${test.junit.reports}/xml" >
        <include name="TEST*.xml" />
      </fileset>
      <report format="frames" todir="${test.junit.reports}/html" />
    </junitreport>

    <fail if="build.test.failure" message="*** JUnit test cases did not pass. ***" />
  </target>

  <!-- Setup classpath for JUnit tests -->
  <target name="classpath-junit" depends="init" >
    <property name="build.src.java-junit" value="${build.home}/test/java" />
    <property name="build.src.rsrc-junit" value="${build.home}/test/resources" />
    <property name="build.junit.classes"  value="${build.dest}/junit/classes" />
    <path id="test-junit.classpath">
    <path location="${build.junit.classes}" />
    <path location="${build.dest.classes}" />
    <path refid="build.classpath" />
    <path location="${build.src.conf}" />
    <path location="${build.home}" />
    <path location="${build.src.rsrc-junit}" />
    </path>
    <property name="test-junit.classpath" refid="test-junit.classpath" />
  </target>

  <!-- Compile the JUnit source code -->
  <target name="compile-junit" depends="init,classpaths,classpath-junit,compile" >
    <delete dir="${build.junit.classes}"/>
    <mkdir dir="${build.junit.classes}"/>
    <javac
       destdir="${build.junit.classes}"
       debug="true"
       debuglevel="lines,vars,source"
       optimize="false"
       deprecation="${build.compiler.deprecation}">
       <classpath>
          <path refid="build.classpath" />
          <path refid="test-junit.classpath" />
       </classpath>
       <src path="${build.src.java-junit}"/>
    </javac>
  </target>

注意:当我为另一个项目尝试基于 ANT 的目标时,ANT / Gradle 在单元测试中都失败了,因此,ANT 代码确实在某些项目的测试中失败了,这些项目在 Gradle 中也失败了。但是我上面给出的案例在 ANT 中运行良好,但在 Gradle“gradle clean build”步骤(其中 build 也调用 :test 任务)中失败。

4

0 回答 0