有沒有一種常見的方法來用NUnit測試具有多個參數的複雜函數?我認爲測試每個條件是非常困難或不可能的。用NUnit測試複雜函數是否有一種常見的方法?
恐怕在測試中預計不會出現在函數中的參數組合。
所以預期的情況不會失敗,但意外。
感謝
有沒有一種常見的方法來用NUnit測試具有多個參數的複雜函數?我認爲測試每個條件是非常困難或不可能的。用NUnit測試複雜函數是否有一種常見的方法?
恐怕在測試中預計不會出現在函數中的參數組合。
所以預期的情況不會失敗,但意外。
感謝
這應該不難測試。如果是這樣,該方法不是爲了可測試性而設計的,而是一種代碼氣味,它告訴你需要重構它。
我傾向於寫在這些情況下如下試驗(其他人可能有更好的建議):
如果您的方法需要大量參數,請考慮重構它以獲取包含該信息的對象,以便您可以封裝規則爲它在對象中,並將該對象傳遞給該方法。
不知道這是什麼樣的,你正在尋找的東西,但是這是由微軟研究院創建的自動化單元測試發生器叫PEX。
Pex自動生成高代碼覆蓋率的測試套件。從Visual Studio代碼編輯器開始,Pex會爲您的方法找到有趣的輸入輸出值,您可以將它們保存爲具有高代碼覆蓋率的小型測試套件。 Microsoft Pex是用於測試.NET Framework應用程序的Visual Studio加載項。
與自動化測試的問題是,很多時候很難定義函數的預期結果爲不等於重新實現是非常功能的方式更普遍的情況。所以你只需要檢查函數的發佈條件是否成立。 – CodesInChaos 2011-02-23 14:23:57
這是基本的測試的好工具。但是複雜的功能,例如requieres(字典)-keys,文件路徑和其它輸入這樣失敗。 – Mimefilt 2011-02-23 14:32:34
使用RowTest類似的問題,可以在
找到看看@「薩姆持有人」的答覆,我從它複製的代碼,有一些調整。
[TestFixture]
public class TestExample
{
[RowTest]
[Row(1)]
[Row(2)]
[Row(3)]
[Row(4)]
public void TestMethodExample(int value)
{
...
...
...
Assert.IsTrue("some condition ..");
}
}
我同意邁克霍費爾,這個問題表明代碼的氣味。
然而,NUnit has a Combinatorial attribute可能會幫助你,如果你不重構/重新設計。
阿門。如果是太難測試,它可能太硬擺在首位理解。 – averell 2011-02-23 14:16:26
我加盟可測性的教會:-)如果你的功能有很多的參數,形成條件複雜格合唱團,賠率是,你可以在幾個不同的對象了分裂碼 - 每一個處理單一責任。 – Morten 2011-02-23 14:26:02