2012-03-23 88 views
5

假设你开始了一个自动生成的方法如何将测试代码与生产代码一起重构?

public void setKey(Key key) { 
    this.key = key; 
} 

,并为其

@Test 
public void testSetKey() 

然后3现在一个月你决定,该方法更合适的名称将是changeKeyTo编写一个测试。你重构你的产品代码和结束:

public void changeKeyTo(Key key) { 
    this.key = key; 
} 

生活是美好的,但是,你的测试名称保持不变

@Test 
public void testSetKey() 

你如何处理这样的事情?你可以用你的生产代码自动重构测试代码吗?日食是否允许这样做?

+1

可能的重复http://stackoverflow.com/questions/3317789/is-it-possible-to-automaticly-rename-the-unit -test-class-when-renaming-the-class – nobeh 2012-03-23 15:15:08

+2

@BehroozNobakht,不是重复的 - 这是关于重命名一个*方法*,这也是从测试中调用的。这是绝对必要的,否则你的测试代码不再编译。重新命名一个测试*类*类似于被测试的类是一个很好的功能,缺少它不会造成任何直接的问题。如果没有它,你的单元测试仍然是编译和运行的,只有更难看到测试类和被测试类之间的逻辑依赖关系。 – 2012-03-23 15:19:13

+1

这是一个关于这个职业的非常好的,深思熟虑的问题,在理想的世界里,我可能会建议程序员的场地。需要考虑的一件事是让自动生成的方法保持完好,因为如果想要“更合适的名称”,那么可以使用类生成来刷新这些方法,并为此做一个包装。但这是一个狭隘的问题;我认为这个问题值得更广泛的讨论。 – hardmath 2012-03-23 15:21:22

回答

1

将不知道这一点改变: 它只更改在其它或同一类使用的方法的引用。
如果你真的想使此功能工作,你可以扩展日食重构 API,像我一样为我的项目,并赋予其新的功能。
如果你喜欢有任何这方面的参考只是问我;-)

+1

请告诉我们更多。我相信很多人会从如何解决这个问题中受益 – JAM 2012-03-23 15:37:15

+1

看看这里,所有的问题都将解决:http://stackoverflow.com/questions/9129689/is-there-any-eclipse-refactoring-api-that -i-可以叩编程 – GingerHead 2012-03-23 15:59:57

0

大多数具有自动重构支持的IDE还会将测试代码中的测试代码保存在同一个项目中,以便IDE可以看到它。 IIRC Eclipse也能够做到这一点,我最后一次使用它。我现在使用的IntelliJ就是这样做的。