我有一个java项目,我正在尝试做TDD。
我的问题是,当我要更改一个类的 API 时,我会编辑它的测试,然后编辑类本身。但可能还有很多其他类使用我编辑的第一个类。
所以我只想编译这个类及其依赖项。然后在这样的最小环境中运行测试。
这是一个示例。 我的项目结构原型(prototype):
.
|_ build.xml
|_ lib/
| |_ *.jar
|_ src/
| |_ myPackage/
| |_ ClassA.java
| |_ ClassB.java
| |_ ClassC.java
|_ test/
|_ myPackage/
|_ ClassATest.java
|_ ClassBTest.java
ClassA
使用ClassC
。 ClassA.java
:
import myPackage.ClassC;
...
现在,在 ClassA
中的 API 更改之后,我想运行其测试,但不编译 ClassB
。所以我只想编译 ClassA
和 ClassC
。
我正在使用 Ant 进行构建。我在 here 中找到了类似的答案。但在这种情况下,我必须手动指定要编译哪些类:
<javac srcdir="${src.dir}" destdir="${build.dir}" classpathref="classpath">
<include name="src/myPackage/ClassA.java"/>
<include name="src/myPackage/ClassC.java"/>
</javac>
我的目标是:
- 能够单独运行所有测试。例如。
ant test-A 类
。 - 使 Ant 自动解析依赖关系。这意味着,当我为
ClassA
构建测试时,它也会编译ClassC
。 - 让 Ant 自动为
test
目录中的每个测试套件构建测试目标。就我而言,它将是test-ClassA
和test-ClassB
。
使用 Ant 是否有可能实现这些目标?或者您对运行测试有更好的建议吗?
最佳答案
使您对 ClassA
的初始更改不会中断 - 例如如果要更改方法,请首先使用新名称复制该方法,但保持旧方法不变。当您成功开发并测试了更改后,您就可以更改 ClassA
的用户。
关于java - 仅编译特定测试所需的源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23752048/