之間你怎麼做單元測試時,你有單元測試測試
- 一些通用單元測試
- 更復雜的測試檢查邊情況下,根據一般的人
舉個例子,想象一下測試一個CSV閱讀器(我只是做了一個演示的符號),
def test_readCsv(): ...
@dependsOn(test_readCsv)
def test_readCsv_duplicateColumnName(): ...
@dependsOn(test_readCsv)
def test_readCsv_unicodeColumnName(): ...
我希望子測試只有在父測試成功時才能運行。這背後的原因是運行這些測試需要時間。許多故障報告迴歸到單一原因也無法提供信息。當然,我可以將所有邊緣案例都歸入主要測試,但是我想知道是否有更加結構化的方式來做到這一點。
我發現這些相關但不同的問題,
- How to structure unit tests that have dependencies?
- Unit Testing - Is it bad form to have unit test calling other unit tests
UPDATE:
我發現TestNG它具有很大的內置支持測試依賴關係。您可以編寫測試這樣,
@Test{dependsOnMethods = ("test_readCsv"))
public void test_readCsv_duplicateColumnName() {
...
}
是的,但是:如果你有一件事情失敗並導致級聯失敗,你不能保證以正確的順序得到失敗消息來解決它們(尤其是如果你做任何測試的自動發現)。例如,我們有一組單元測試,用於檢查Web環境是否正確設置,其中(對其他用戶來說)對於新員工來說很方便。如果缺少文件X並且該文件在3個位置符號鏈接,則首先要修復丟失的文件。這對新手來說可能並不明顯,因此你會減少測試套件的用處。 – 2012-06-28 18:50:07
有些情況下,測試之間需要依賴*。例如:測試登錄到外部服務器的API包裝器。該登錄會話需要在測試之間共享。 – 2017-11-06 19:17:58