2 回答

TA貢獻(xiàn)1966條經(jīng)驗(yàn) 獲得超4個(gè)贊
在我看來(lái),您的繼承示例并不是使用這兩種抽象方法的最佳方式。一個(gè)是結(jié)構(gòu)性的,另一個(gè)是靜態(tài)的 - 您可以根據(jù)另一個(gè)法案驗(yàn)證一個(gè)法案。
在這兩種情況下,繼承在這里都不是正確的關(guān)系。您可以成功地將工廠模式用于“getBillCharger”或更現(xiàn)代的 TestDataBuilders 或 ObjectMother 模式。
對(duì)于第二種方法,您可以只使用輔助類。如果需要在 Test 類中多次調(diào)用相同的構(gòu)造邏輯,可以使用 @Before
一個(gè)重要的方面是,如果您將 tests_case_1 放在超類中,您將隱藏部分邏輯并且您的測(cè)試不會(huì)那么明顯。我更喜歡更明確和可見的測(cè)試用例,因此我會(huì)避免這種設(shè)置。

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超8個(gè)贊
事實(shí)上,最初的方法確實(shí)應(yīng)用了一種設(shè)計(jì)模式,它稱為Template Method。
OTOH,這些問(wèn)題本身就帶有尋找設(shè)計(jì)模式作為目標(biāo)的輕微氣味。為什么要麻煩,如果他們手頭已經(jīng)有了滿足功能(此處:測(cè)試正確的東西)和非功能(此處:將公共部分與具體部分明確分開)要求的解決方案。我會(huì)接受的一個(gè)原因是:溝通,例如:能夠?yàn)樵O(shè)計(jì)命名,以便同事快速了解我的意圖。
添加回答
舉報(bào)