好吧,我知道什麼是單元測試的目的一般來說,但是我發現有些事情困擾着我。
1) 測試的目的是早期發現錯誤。因此,在後面的一些迭代中,如果我在代碼中做了一些更改,自動化測試必須警告我並告訴我,我已經搞砸了一些早已被遺忘的軟件。
但是,說我有A類和說,與其他一些類的實例進行交互,稱之爲B類
當一個A類編寫單元測試,他嘲笑B類 所以,在未來的某些時候,如果在B類中做了一些改變,並且導致了一些錯誤,那麼它們只會反映在B類的單元測試中,而不是A中的(因爲A的測試不使用真正的B類,而是模擬具有固定的輸入和輸出)。 所以,我看不到單元測試怎麼能儘早通知一個人不知道的bug?我意識到我正在改變的課程中可能存在的錯誤,我不需要進行單元測試,我需要測試來警告我所做的更改的後果,從而導致某些「被遺忘」類中的錯誤,而這不是單元測試是可能的。或者我錯了?
2) 在編寫模擬和正確的調用方法,期望調用方法,輸入和返回值時,必須知道待測類將如何實現。 我認爲這與測試驅動開發相矛盾。在TDD中,首先寫測試,然後在他們的驅動下寫一個代碼。 但是我不能寫出正確的期望值(一般的測試),除非我編寫需要測試的代碼。這與TDD相矛盾,對吧?
如果我使用真實物體而不是模擬物,這兩個問題都可以解決。但那不是單元測試,對吧?在單元測試中,待測類必須與系統的其他部分隔離開來,而不是使用真正的類,而是使用mock。
我確定我錯了某處,但我找不到在哪裏。我一直在閱讀和閱讀,而我無法找到我理解錯誤的地方。
相關:http://stackoverflow.com/questions/286587/are-you-really-using-unit-tests – Thilo