回答
根據我的理解: 使用參數化測試,您可以爲測試案例提供一系列靜態輸入。
理論相似但概念不同。他們背後的想法是創建測試用例,測試假設而不是靜態值。 因此,如果我提供的測試數據根據一些假設是真實的,則得出的斷言總是確定性的。 背後的驅動思想之一是您將能夠提供無限數量的測試數據,並且您的測試案例仍然是真實的;此外,通常您需要在測試輸入數據中測試一系列可能性,例如負數。如果您靜態測試,即提供一些負數,則無法保證您的組件能夠對付所有負數,即使這樣做極有可能。
從我所知道的情況來看,xUnit框架試圖通過創建所提供的測試數據的所有可能組合來應用理論的概念。
在數據驅動場景中接近場景時(即只有輸入發生變化,但測試總是一次又一次地執行相同的斷言),兩者都應該使用。
但是,由於理論似乎是實驗性的,我只有在需要在輸入數據中測試一系列組合時纔會使用它們。對於所有其他情況,我會使用參數化測試。
https://github.com/BartoszMiller/junit4-explored/blob/master/src/test/java/explored/theory/TheoriesRunner.java - 這是一個基本的樣本測試,對10000個不同的輸入數據執行一個@Theory謝謝重寫抽象ParameterSupplier。我不確定使用參數化亞軍是否可以輕鬆實現。 – MrKiller21 2016-10-30 12:29:36
根據我的理解,不同之處在於,當您想要做的只是測試一組不同的輸入(單獨測試每個輸入)時,使用參數化測試,理論是參數化測試的一個特例測試每個輸入作爲一個整體(每個參數都必須爲真)。
Parameterized.class用單個變量測試「parametrize」測試,而Theories.class用幾個變量的所有組合來「參數化」。
有關示例,請閱讀:
http://blogs.oracle.com/jacobc/entry/parameterized_unit_tests_with_junit
http://blog.schauderhaft.de/2010/02/07/junit-theories/
http://blogs.oracle.com/jacobc/entry/junit_theories
Theories.class類似於Haskell的快速檢查:
http://en.wikibooks.org/wiki/Haskell/Testing
但QuickCheck自動生成參數組合
這不是事實。您可以使用任意數量的變量(參數)進行參數化測試,並使用單參數進行理論測試。上面的@Fabio Kenji的回答很好地解釋了真正的差異。 – Gilead 2012-10-12 11:56:40
有點晚回覆。但這對未來的測試人員會有幫助。
參數化測試VS理論
- 類具有 「@RunWith(Parameterized.class)」 VS「@RunWith(理論註釋。類)」
- 測試輸入是從一個靜態方法返回Collection中獲取,並用@參數VS與@DataPoints或@DataPoint註釋的靜態字段註釋。
- 的輸入被傳遞給構造(強制)和由測試方法中所使用VS輸入直接傳遞給測試方法
- 試驗方法都被註解@Test和doen't接受參數VS試驗方法都被註解@Theory並且可以採取參數
除了上述反應: 在具有4個值和2種測試方法的輸入上
@RunWith(Theories.class) - 將產生2個JUnit測試
@RunWith(Parameterized.class) - 將產生8(4個輸入x 2種方法)JUnit測試
- 1. Spring參數化/理論JUnit測試
- 2. JUnit參數化測試處理
- 3. 參數化測試JUnit
- 4. 使用類別與JUnit中的參數化測試和硒rc
- 5. JUnit,參數化測試的超時
- 6. JUnit參數化測試在測試後獲取參數
- 7. 參數JUnit測試
- 8. 使用JUnit參數化測試
- 9. JUNIT參數錯誤:我正在使用JUnit的參數化測試和參數
- 10. JMockit和參數化測試(JUnit參數化或JUnitParams)
- 11. 每個參數的Junit參數化測試
- 12. 使用非原始參數進行參數化的JUnit測試?
- 13. 使用多個測試進行參數化junit測試
- 14. Junit參數化測試與Powermock一起 - 如何?
- 15. 理論與測試Nunit
- 16. junit參數化測試可以處理多少個最大參數?
- 17. 事實與理論的區別? - xUnit.net
- 18. Fitnesse與JUnit的區別?
- 19. 在JUnit中的TestClass級別參數化?
- 20. MockMvc。如何參與JUnit測試
- 21. Log4J與JUnit測試
- 22. 參數化測試vs.理論與硬編碼在預先定義的測試中
- 23. Maven&Junit理論
- 24. JUnit參數化測試 - 多維數組混合類型
- 25. Java Selenium Junit Maven:參數化測試的方法?
- 26. JUnit的參數化測試顯示換行符
- 27. Junit參數化測試,一個不同的想法
- 28. 編寫更好的JUnit參數化測試用例
- 29. 運行未使用註釋的參數化jUnit測試
- 30. 在遊戲中使用參數化的JUnit測試!框架
我之前使用參數化,但發現它可能會有點混亂。理論似乎也以同樣的方式做了同樣的事情,但以更清晰的方式。也許這是第二次嘗試讓參數化測試的概念正確。好問題,謝謝你提高它! – Newtopian 2011-04-20 08:46:48