2016-09-23 158 views
1

我有一個關於單元測試的基本問題。我相信當你進行單元測試時,你基本上測試了一個代碼單元,並且在java的情況下,我們可以將每個方法作爲一個代碼單元來對待。我相信當我們單元測試一個方法時,爲了測試方法的功能,所有對另一個方法的調用都必須被模擬。下面是一個例子。如果我的理解是正確的,請告訴我。Spring Boot APP - 單元測試

我有類A,B和C

類A有方法1

B類有方法1和2

C類具有方法1這使得外部服務調用。

Class A.method 1-> Class B.method1 - > ClassB.method2 - > Class C.method 1 - > external soap service。

在上面的場景中,當我單元測試A類方法1時,我應該嘲笑Class B.method1響應嗎?同樣,當我是單元測試類B.method1,應該模擬類B.method 2?我相信這將適用於隨後被調用的其他方法。

+0

我看到你的問題被downvoted。可能是因爲它與Spring Boot沒有真正的關係,但更多的是一般的單元測試問題,而且ppl認爲它有誤導性? –

+0

@TonyLang有人在過去的10分鐘內對我的10個帖子進行了低估。他們甚至低估了我的問題的答案。 –

+0

@PaulSweatte,你發佈的鏈接似乎談論集成測試。 –

回答

1

「當我的單元測試類中的方法1,我應該嘲笑類B.method1」

我是這麼認爲的,因爲你是「測試時,A類爲「單位」

我單元測試類B.method1,應該模擬類B.method 2「

你可以,但也許你不會想。

如果B.method2是私有的,它是邏輯的一部分B.method1

如果B.method2是公開的,但事實上,B.method1調用它可能表明,方法可以分離到另一個類,因爲method1和method2可能不在抽象級別。

如果您在測試B.method1時想要模擬B.method2,則可以使用spy

+0

謝謝@託尼郎! –

+0

這是否意味着我的課是一個單位,而不是我的方法? –

+0

@PunterVickyWell,我曾經將每個方法都視爲一個單元,並使用反射來測試每個私有方法。儘管如此,這並沒有結束 –