2014-10-08 116 views
0

假設測試代碼(src/test/java)中的生產代碼(src/main/java)和ClassXTest中的類ClassX。在一些測試方法中,我想篡改ClassX返回的方法之一,所以我覆蓋了ClassX及其方法。我不想使用任何模擬框架或這個類是匿名的。是否有任何命名應如何命名這些類?測試代碼中類的命名約定

+0

這沒有任何意義;如果你正在測試'ClassX',你爲什麼要在測試過程中覆蓋它? – 2014-10-08 22:22:32

+0

可以僞造它返回的值(例如,返回常量而不是訪問WS或DB)或感知某些內容(例如,存儲參數的值以便稍後可以檢查)。 – 2014-10-09 05:07:34

+0

要測試一個抽象類,你也必須擴展它。 – 2014-10-09 05:33:22

回答

0

這些類被稱爲「測試特定的子類」,似乎沒有任何命名約定。 http://xunitpatterns.com/Test-Specific%20Subclass.html給出了一些覆蓋正在測試的類的示例。

+0

這樣的類也被稱爲「測試子類」,我看到建議在名稱前面添加了「測試」前綴。例如,生產類「Server」,測試用例類「ServerTest」和測試子類「TestingServer」。 – 2014-11-04 21:24:44

0

就個人而言,我會叫這些類:ClassXTestImpl

這不是世界上最偉大的命名慣例,但它足以表明它是測試代碼,而不是預期由生產代碼中使用。你也可以使它成爲它正在使用的測試類的私有內部類,那麼它甚至不會被你的生產代碼訪問。

通常,我不喜歡調用東西Impl,但在這種情況下,ClassX部分將定義該類實際執行的操作,TestImpl位僅用於將其標記爲測試實現。


旁白有關部分嘲弄:

我知道你說你不想用嘲諷的框架,但如果你是爲了更換method1使method2更容易測試和兩種方法居住在同一個班級,那麼你正在做的是一種部分嘲弄的形式,無論你是否使用框架來做。很難找到與特定框架無關的部分模擬的文檔,所以我會提供EasyMock's documentation,但指出大多數模擬框架支持這種模擬。