String-Array kann nicht übergeben werden

8

Ich möchte verschiedene Testparameter mit NUnit Test übergeben.

Ich kann Integer-Array übergeben, kein Problem, aber wenn ich String-Array übergeben, funktioniert es nicht.

%Vor%
  

Fehler 3 Ein Attributargument muss ein konstanter Ausdruck sein, typeof   Expression oder Array-Erstellung eines Attributparameters   type ... \ ContactControllerTests.cs 78 13 UnitTests

Es funktioniert, wenn ich String-Array als zweites Argument verwende.

Was ist der Grund?

%Vor%     
codebased 02.04.2015, 00:15
quelle

2 Antworten

2

Ich glaube, das ist ein Fall von Überladungsauflösung & amp; Array-Kovarianzproblem.

Mit [TestCase(new string[] { "" })] Compiler entscheidet die beste Überladung für TestCase Konstruktor ist derjenige, der params object[] als Argument übernimmt. Der Grund dafür ist, dass der Compiler string[] dank der Kovarianz der Arrays object[] zuweisen kann und daher eine spezifischere Übereinstimmung als string[] mit object Zuweisung (anderer Konstruktor).

Dies passiert nicht mit int[] , weil Kovarianz gilt nicht für Arrays von Werttypen , sodass der Compiler object -Konstruktor verwenden muss.

Nun, warum entscheidet es, dass new [] { "ACCOUNT", "SOCIAL" } kein array creation Ausdruck eines Attributparametertyps geht über mich hinaus.

    
k.m 02.04.2015 08:31
quelle
0

Überlege wie folgt

%Vor%

Ich bin mir nicht sicher, ob dein Test mir ähnlich wäre. Aber ich habe mit dem folgenden Test das erwartete Ergebnis bekommen.

%Vor%

Und das Ergebnis

Wenn Sie darüber hinaus einen Verweis auf das TestCaseAttribute

benötigen     
Saifur 02.04.2015 00:54
quelle

Tags und Links