仅编译特定测试所需的源

时间:2014-05-20 06:00:12

标签: java unit-testing ant junit tdd

我有一个java项目,我正在尝试做TDD。

我的问题是当我要改变一个类的API时,我编辑它的测试,然后是类本身。但是可能有很多其他类使用我编辑的第一个类。

所以我想编译这个类及其依赖。然后在如此极小的环境中运行测试。

以下是一个例子。 我的项目结构原型:

.
|_ build.xml
|_ lib/
| |_ *.jar
|_ src/
| |_ myPackage/
|   |_ ClassA.java 
|   |_ ClassB.java
|   |_ ClassC.java
|_ test/
  |_ myPackage/
    |_ ClassATest.java
    |_ ClassBTest.java

ClassA使用ClassCClassA.java

import myPackage.ClassC;
...

现在ClassA中的API更改后,我想运行其测试,但没有编译ClassB。所以我只想编译ClassAClassC

我使用Ant进行构建。我在here找到了类似的答案。但在这种情况下,我必须手动指定要编译的类:

<javac srcdir="${src.dir}" destdir="${build.dir}" classpathref="classpath">
    <include name="src/myPackage/ClassA.java"/>
    <include name="src/myPackage/ClassC.java"/>
</javac>

我的目标是:

  1. 能够单独运行所有测试。例如。 ant test-ClassA
  2. 让Ant自动解决依赖关系。这意味着,当我为ClassA构建测试时,它也会编译ClassC
  3. 让Ant自动为test目录中的每个测试套件构建测试目标。就我而言,它将是test-ClassAtest-ClassB
  4. 是否有可能通过Ant实现任何这些目标?或者你对运行测试有更好的建议?

1 个答案:

答案 0 :(得分:1)

ClassA非破坏进行初步更改 - 例如如果您正在更改方法,请首先使用新名称制作方法的副本,但保留旧方法不变。成功开发并测试更改后,您可以更改ClassA的用户。