java - 仅编译特定测试所需的源

标签 java unit-testing ant junit tdd

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

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

所以我只想编译这个类及其依赖项。然后在这样的最小环境中运行测试。

这是一个示例。 我的项目结构原型(prototype):

.
|_ 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-A 类
  2. 使 Ant 自动解析依赖关系。这意味着,当我为 ClassA 构建测试时,它也会编译 ClassC
  3. 让 Ant 自动为 test 目录中的每个测试套件构建测试目标。就我而言,它将是 test-ClassAtest-ClassB

使用 Ant 是否有可能实现这些目标?或者您对运行测试有更好的建议吗?

最佳答案

使您对 ClassA 的初始更改不会中断 - 例如如果要更改方法,请首先使用新名称复制该方法,但保持旧方法不变。当您成功开发并测试了更改后,您就可以更改 ClassA 的用户。

关于java - 仅编译特定测试所需的源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23752048/

相关文章:

c# - 抽象方法与接口(interface)

java - 使用 Selenium WebDriver 进行简单测试设置失败

php - 使用 PHP SimpleTest 进行测试

python - 使用 flask 登录对 flask 进行单元测试时禁用@login_required

java - 使用 SonarQube Ant 任务进行分析

java - 使用 Ant 将 Maven 应用程序复制到 Raspberry Pi 时出现 AccessDeniedException

java - WLST ant 任务未找到 classpathref

java - 单击提交按钮时,用户不会导航到 Selenium Webdriver 中的下一页

java - 如何在 Java 和 PostgreSQL 中处理 32 位数字?

unit-testing - 保存Associates Cakephp时如何测试添加