Saat Anda menggunakan TestCaseSource, Anda sebenarnya membuat 'rangkaian' pengujian. Tes NUnit disusun dalam pohon. Biasanya, perakitan Anda akan menjadi akar teratas dari pohon, dan setiap kelas di dalamnya merupakan cabang, yang pada gilirannya bercabang untuk menyertakan semua metode pengujian individual. yaitu
-Test1
- TestClassA -Test2
-Test3
TestAssembly
-Test4
- TestClassB -Test5
-Test6
Anda dapat melihat struktur ini jika Anda melihat TestResults.xml.
Saat Anda menggunakan TestCaseSource
Anda sebenarnya membuat level lain di pohon. Jadi sekarang pohon Anda terlihat seperti ini.
-Test1A
-TestCaseSourceSuite -Test1B
-Test1C
- TestClassA -Test2
-Test3
TestAssembly
-Test4
- TestClassB -Test5
-Test6
Dalam contoh Anda, TestCaseSourceSuite
akan diberi nama SampleTest
. Alasan mengapa apa yang Anda miliki saat ini tidak berfungsi adalah karena atribut TestOf
saat ini diterapkan ke TestCaseSourceSuite
, bukan Test1A
, Test1B
Test1C
. (Properti seperti TestOf tidak menyalin pohon secara hierarki ke atas atau ke bawah.)
Bagaimanapun. Bagaimana cara memperbaikinya? ???? Menggunakan TestCaseData untuk TestCaseSource Anda sepertinya merupakan pilihan terbaik. TestOfAttribute sebenarnya tidak banyak berguna, jadi tidak ada 'properti bernama' untuk menyetel nilainya, namun Anda bisa menggunakan metode SetProperty
dan kelas PropertyNames
sebagai gantinya. Cobalah sesuatu yang sedikit seperti ini...
public class MyTests
{
[TestCaseSource(typeof(MyDataClass), "TestCases")]
public void Test(int n, int d)
{
Assert.IsTrue(true);
}
}
public class MyDataClass
{
public static IEnumerable TestCases
{
get
{
yield return new TestCaseData(12, 3).SetProperty(PropertyNames.TestOf, "MethodUnderTest");
yield return new TestCaseData(12, 2).SetProperty(PropertyNames.TestOf, "MethodUnderTest");
}
}
}
Semoga itu bisa membantu!
person
Chris
schedule
03.04.2020