2014-09-18 17 views
6

Aşağıdaki Dize dizilimim neden bir Hata veriyor, hepsi dizgiler değil mi ??? C# bir öznitelik değişkeni sabit bir ifade olmalıdır

[Test] 
[TestCase(new string[]{"01","02","03","04","05","06","07","08","09","10"},TestName="Checking10WOs")] 
public void Test(String[] recordNumber) 
{ 
    //something.. 
} 
+0

"Yeni" ile oluşturulan her şey sabit olamaz, değil mi? –

+0

Hata mesajı oldukça açıklayıcı görünüyor. Bir öznitelikte dizi oluşturmayı kullanamayacağınızı söylüyor; Yaptığın şey budur. – Servy

+0

http://stackoverflow.com/questions/19578368/an-attribute-argument-must-be-a-constant-expression-typeof-expression-or-array – MethodMan

cevap

2

dizeleri tüm sabit ancak bunlar olan dizi değil "bir özellik bağımsız değişken, bir sabit ifadesi bir öznitelik parametresi Çeşidi Typeof ekspresyon ya da dizi oluşturma ifadesi olmalıdır." Bunun yerine bu deneyin: TestCaseAttribute bir params liste olarak kendi davaları kabul ettiğinden

[Test] 
[TestCase("01","02","03","04","05","06","07","08","09","10", TestName="Checking10WOs")] 
public void Test(String recordNumber) 
{ 
    //something.. 
} 

Bu çalışır.

+0

verim şaşırdı olabilir, bu hata çözüldü ama ben Nunit üzerinde testi yürütürken, bana "params eşleşmez" hatası verdi. [TestCase (3, yeni String [] {"01", "02", "03", "04", "05", "06", "07", "08", " 09 "," 10 "}, TestName =" Checking10WOs ")] public void SwitchingLevelsFromWOLevel (int a, String [] recordNumber) Sadece işe yaramaz bir parametre geçtim ve işe yaradı. emin değilim neden – GucciProgrammer

+0

@GucciProgrammer Benim düzenleme bakın, testinizin parametresinin tek bir 'string' olması gerekir. İşin tuhafı işe yarıyor, ama bir dizi diziyle bir test yapacaksın. Bu testi 10 kez tek string parametresiyle çalıştırmak istediğini sanıyordum. –

5

Bu, sorunun başlığına cevap vermez, ancak sorununuzu çözer.

TestCaseSource'u kullanmak isteyebilirsiniz, birden fazla sınama durumu senaryosunu aynı sınama mekanizmasına aktarmanıza olanak tanır ve istediğiniz gibi karmaşık yapılar kullanabilirsiniz.

[Test] 
    [TestCaseSource("TestCaseSourceData")] 
    public void Test(String[] recordNumber, string testName) 
    { 
     //something.. 
    } 

    public IEnumerable<TestCaseData> TestCaseSourceData() 
    { 
     yield return new TestCaseData(new string[] {"01", "02", "03", "04", "05", "06", "07", "08", "09", "10"}, "Checking10WOs"); 
    } 

İlk parametre recordNumber ve ikinci aşağıda testName

bkz ekran görüntüsü olduğunu anlamaya olacaktır. Bu işlem size zaman kazandırır

enter image description here

Umut.

İlgili konular