在java中删除代码和单元测试

时间:2014-07-15 15:33:31

标签: java unit-testing junit mockito

我被要求为从java类中删除的代码创建单元测试(注意这不是API,所以我不需要弃用代码)。

假设你有一个java类,如下所示,你需要删除一些代码,如下所示:

public class foo extends foobar {

protected void doStuff() {

   doMoreStuff();

   // Everything below needs to be deleted, including the doStuffToo() method

   Object o = null;
   doStuffToo(o);



}

public void doMoreStuff() {
   boolean a = true;
}

// this method needs to be deleted
public void doStuffToo(Object o) {
   o = new Object();
}



}

我认为你应该简单地删除已删除代码的测试用例,但是我被告知我应该编写单元测试以检查是否存在旧代码,如果存在错误的合并未来。

上述示例中的最佳做法是什么?

1 个答案:

答案 0 :(得分:3)

希望你有doStuff方法的单元测试。假设你这样做,我会做以下事情:

  1. 更新doStuff方法的测试以反映新逻辑应该做什么。
  2. 运行doStuff测试并验证它们是否失败。
  3. 删除您要删除的应用程序代码。
  4. 重新运行doStuff测试并验证它们是否通过。
  5. 如果测试未在第4步中通过,请进行相应的分析和重构,直到它们通过。
  6. 删除测试已删除方法的测试(无论如何,您将收到步骤3中的编译器错误)。
  7. 我很想知道单元测试了什么"检查旧代码的存在"会做什么,他们会提供什么好处。我知道如果留下这样的代码将会发生什么。它将保留在代码库中并变得多余,导致新团队成员混淆,直到几年后明智的人决定将其删除。

    无论如何,你的安全网是doStuff测试,希望可以捕获任何合并问题。如果您在源代码管理下进行测试(我希望如此!),那么您可以随时恢复到代码库的先前版本,以便在将来需要时检索已删除的测试。