2012-03-23 92 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就是這樣做的。