2017-05-04 7 views
8

Mam zestaw C# dla testów uruchamianych w Visual Studio 2017 przy użyciu MSTest.TestAdaptor 1.1.17. Chcę użyć DataTestMethod do uruchomienia testu z kilkoma zestawami danych. Mój problem jest, chcę użyć wartości dziesiętnych w moich wierszy DataRows ale nie może:Używanie wartości dziesiętnych w DataRowAttribute

[DataTestMethod] 
[DataRow(1m, 2m, 3m)] 
[DataRow(1, 2, 3)] 
[DataRow(1.0, 2.0, 3.0)] 
public void CheckIt(decimal num1, decimal num2, decimal expected) 
{ 
} 

Kiedy próbuję użyć [DataRow(100m, 7m, 7m)] nie będzie nawet skompilować źródło: error CS0182: An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute parameter type..

Gdy użyję [DataRow(100, 7, 7)], test się nie powiedzie, ponieważ mój test oczekuje decimal, ale otrzymuje wartość int32 jako wartość.

Podczas korzystania z [DataRow(100.0, 7.0, 7.0)] test zakończy się niepowodzeniem, ponieważ mój test oczekuje decimal, ale otrzymuje wartość double jako wartość.

Dlaczego nie mogę używać liczb dziesiętnych w DataRow?

+0

który język jest wyjątkiem? Niestety nie rozumiem tego języka – loneshark99

+0

To niemiecki. Krótki Google "błąd CS0182" znalazł angielski komunikat, aktualizuję pytanie! – Sam

Odpowiedz

2

To dlatego dziesiętny nie jest primitive type

Rozwiązaniem jest użycie sznurki, a następnie konwertować parametry testu.

+1

Ciągi nie są też typami pierwotnymi. –

Powiązane problemy