【问题标题】:Making jUnit output info and compile to /build folder制作 jUnit 输出信息并编译到 /build 文件夹
【发布时间】:2011-10-18 04:56:22
【问题描述】:

我有以下 Ant 构建文件:

<?xml version="1.0"?>    
<!-- the value of the default attr must be one of the targets. -->
<project name="Money" default="build-source" basedir=".">        
    <description>The Money project build file.</description>
    <property name="src" location="."/>
    <property name="build" location="build"/>
    <property name="junit" location="lib/junit-4.9b3.jar"/>

    <path id="_classpath">
        <pathelement path="${junit}"/>
        <pathelement path="${build}"/>
    </path>

    <target name="prepare">
        <mkdir dir="${build}"/>
    </target>

    <target name="build-source" depends="prepare"
            description="compile the source ">
        <javac srcdir="${src}" destdir="${build}">
            <classpath refid="_classpath"/>
        </javac>
    </target>

    <target name="run" depends="build-source">
        <junit printsummary="on" showoutput="on">
            <test name="money.MoneyTest"/>
            <classpath refid="_classpath"/>
        </junit>
    </target>
</project>

这是非常基本的 - 我只是想让这个东西正常运行。我不明白的是:1)为什么它将编译后的文件输出到 /build/money 目录?鉴于我的文件的目录结构,我希望输出目录只是 /build:

build/
build.xml
lib/
src/
test/

2) 当有测试未通过时,它会显示“Test money.MoneyTest FAILED”。我希望它输出有关失败、预期/实际值、行号等的信息。

我无法通过盯着上面的构建文件来解决这个问题。有什么建议吗?

【问题讨论】:

  • 附言。上面的那些目录(和 build.xml)当然都在新行上,所以它们都在同一级别
  • 发布到 SO 时,如果您将代码(或其他任何内容)缩进 4 个空格,它将在您输入时显示为格式化。您可以使用 Markdown 编辑器栏中的大括号 {} 按钮来执行相同操作。

标签: ant junit


【解决方案1】:
  1. 它输出build下的编译文件,创建一个与你的包布局相对应的目录结构。

    由于您将类放在money 包中,因此输出将在build/money 下。如果你把你的类放在org.example.foo 包下,你的输出将在build/org/example/foo 目录中。

    要将您的.class 文件放在build 中,您必须使用默认包。

    编辑 我假设你的源文件有一个package money; 声明,如:

    package money;
    
    public class MoneyTest {
    ...
    }
    
  2. 如果添加&lt;formatter&gt; 元素,有关测试失败的详细报告将写入输出文件(默认情况下,名为 TEST-name)。另请参阅Ant Junit Task Documentation

    <junit printsummary="withOutAndErr" showoutput="on">
        <formatter type="plain"/>
        <test name="money.MoneyTest"/>
        <classpath refid="_classpath"/>
    </junit>
    

    我还没有找到将失败的测试报告直接打印到标准输出的方法。

【讨论】:

  • 感谢您抽出宝贵时间回答,但我仍然不明白“金钱”一揽子交易。我没有“金钱”包——只有一个名为 Money 的文件夹,具有上述文件夹结构。你说要构建我的类,我必须使用默认包,那个包是什么?谢谢。
  • .java 文件所在的文件夹必须与 .java 文件顶部的 package 声明相匹配。请参阅编辑后的答案。另请参阅此问题:stackoverflow.com/questions/1088509/…
猜你喜欢
  • 1970-01-01
  • 2016-02-09
  • 2017-06-17
  • 1970-01-01
  • 2020-10-05
  • 1970-01-01
  • 1970-01-01
  • 2015-01-06
  • 2018-07-31
相关资源
最近更新 更多