识别重构后留在错误包中的测试



我正在清理一个经过深思熟虑的包结构。这涉及在包之间移动大量类。

eclipse 重构工具不会自动将任何相应的单元测试移动到新包中,所以我必须记住手动执行此操作。我通常会忘记这样做,因为我懒惰、愚蠢和健忘。

我正在考虑将一些东西放在一起,以确定看起来在错误包装中的测试,但更愿意使用现成的东西。

是否存在任何此类工具?

MoreUnit 在移动相应的类时自动移动测试类。

如果你的单元测试遵循标准命名约定<class>Test,那么你可以编写一个类路径扫描程序,它首先标识所有单元测试(名称在"Test"上完成的单元测试,以及至少一次具有@Test注释的单元测试),然后对于每个单元测试,你可以得到它的名字"com.foo.<class>Test", 删除测试,最终会得到"com.foo.<class>",然后您可以检查测试本身是否具有"com.foo.<class>"类型的实例变量。如果没有,您可以触发警告或其他内容。

所以,假设你有一个这样的类

package com.foo.Bar
@NoArgsConstructor
public class Bar {
   public int doSomething(){
    //...
    return 1337;
   }
}

和测试:

package com.foo.fooo.BarTest
public class BarTest {
  private com.foo.Bar bar;  
  @Before
  public void setup(){
     bar = new Bar();
  }
  @Test
  public void testSomething(){
  //testing and stuff
  }
}

然后,您可以发现 BarTest 类是一个单元测试类(因为它具有@Test注释,并且还有一个以 Test 结尾的名称)。您可以看到实例变量栏具有,并获取它们的完全限定。你会得到一个com.foo.Bar,这是错误的,因为你的测试在包com.foo.fooo中,所以你会触发一个警告,指出你的测试类与它测试的类在不同的包中。这将适用于我正在编写的 90% 的测试类,当然,这是一个非常理想的情况,在实际测试中,您可能有多种类型的实例变量,然后您必须从单元测试的名称推断出哪一个是测试的,并期望至少有一个实例变量是正确的类类型。

由于答案似乎是不存在这样的工具,我自己继续将一些东西放在一起 - 它很自然地适合我维护的工具的附加功能。

如果它对其他人有用,它可以在 1.1-SNAPSHOT 中找到

https://github.com/hcoles/highwheel

它目前只是一个简单的测试,它推断被测类的名称,假设命名约定为

Test<Foo>

<Foo>Test

正在被跟踪。如果该类不存在,它将查看其他包中是否存在另一个同名的类。

最新更新