2016-09-01 1 views
0

Ich versuche Guid.Empty in meiner Einheit Test zu bestehen:Wie kann Guid.Empty in einen parametrisierten Komponententest übergeben werden?

[TestCase(null)] 
[TestCase(Guid.Empty)] 
public void When_AccountGuid_IsNullOrEmpty_AddError_Is_Invoked(Guid? accountGuid) 
{ 

} 

jedoch der Compiler beschwert sich:

An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute parameter type

Wie gehe ich Guid.Empty in Methode meine Unit-Test?

ich auch versucht habe es, indem er erklärt es als privates Mitglied Faktor aus der Klasse, mit dem gleichen Fehler Compiler:

 private static Guid _emptyGuid = Guid.Empty; 
     [TestCase(null)] 
     [TestCase(_emptyGuid)] 
     public void When_AccountGuid_IsNullOrEmpty_AddError_Is_Invoked(Guid? accountGuid) 
     { 

     } 

Antwort

6

In diesem Fall verwenden Sie das TestCaseSource Attribut, um die Liste der Fälle zu definieren.

+0

BAAAAAAAAAAAM! Danke –

-1

Leere eine Variable tatsächlich ist, und Sie können keine Variablen passieren in Attribute. Ausdrücke müssen Konstanten sein, versuchen, eine "neue Guid()" zu übergeben ODER Standard (Guid)

+0

Leider glaube ich 'neue Guid()' und 'default (Guid)' wird immer noch den gleichen Kompilierungsfehler geben. –

+0

@ScottChamberlain - habe es selbst nach deinem Kommentar getestet und, yep, selbe Fehler :) –

+0

'Guid' ist kein Attribut Parameter Typ und' Guid' (oder interessanterweise 'dezimal') kann nicht als Attribut Parameter verwendet werden . – Dirk

Verwandte Themen