2017-08-29 125 views
0

如果我不知道在執行期間傳遞的參數,如何從Nunit控制檯執行下面的代碼。如果我不想使用TestCase屬性指定參數,如何執行參數化測試用例?

[TestCase] 
    public void ExecuteString(string someValue) 
    { 
     Console.WriteLine(someValue); 
    } 

我知道我們應該以這種格式[TestCase(「Values」)]傳遞參數。但是如果我不確定參數是什麼?

+0

爲什麼你不確定參數是什麼?你是程序員,你在測試用例中定義它們。如果你不知道它們,那麼使用它們的代碼有什麼用處? – oerkelens

+0

參數是動態的。所以。我應該能夠在不知情的情況下執行它們。我將只知道上面代碼中字符串類型的參數類型。 –

+0

我想知道你是否對大多數人擁有的單元測試概念有相同的想法。如果您的代碼應該處理不同的類型,請設置不同類型的測試用例。單元測試使用固定值來查看您的代碼是否能爲您提供預期的結果。在事先沒有確定輸入的情況下,您無法預測輸出,因此您無法測試。 (是的,在某些情況下可能需要使用隨機值,但通常不會) – oerkelens

回答

1

您不能以這種方式使用TestCase屬性,但是可以使用變量和運行時值的TestCaseSource屬性。

它的工作原理如下所示。可能這是你在找什麼?

[Test, TestCaseSource(typeof(string), nameof(SomeClass.someCases))] 
public void Test(string someValue) 
{ 
    Console.WriteLine(someValue); 
} 

private class someClass 
{ 
    public static IEnumerable someCases 
    { 
     get 
     { 
      yield return 
      new TestCaseData("valuefornow"); 
      yield return 
      new TestCaseData("valueforlater"); 
     } 
    } 
} 
相關問題