2017-12-15 27 views
2

xUnit 2.2以前のバージョンでは、理論を実装する際に日付文字列をインラインデータとして渡すことができました。Xunit 2.3.0日付をインラインパラメータとして渡すことができません

 [Theory] 
     [InlineData("title 1", "testing 1", 1, "Educational", "2017-3-1", "2018-12-31")] 
     [InlineData("title 2", "testing 2", 2, "Self Employment", "2017-2-1", "2018-2-28")] 
     public async Task WhenPassingCorrectData_SuccessfullyCreate(string title, string description, int categoryId, string category, DateTime startDate, DateTime endDate) 
     { 

     } 

2.3アップデートでは、これは壊れているようですが、Visual Studioではコンパイルエラーが発生しています。

値は タイプのメソッドパラメータ「たstartDate」への転換ではない「のSystem.DateTime

は、誰もが持つが、文字列として日付を受け取り、内部にそれらをキャストすることは、この他の回避策を持っています試験方法?

これは今回のバグであり、将来のバージョンで修正される予定ですか?

PS:私はあなたがMemberDataAttributeと、それが明示的に行うことができますVS2017

おかげで、 Wijitha

+0

それはこれまでに(それはとにかくそれを魔法のように解析しようとしていたかどうか、あなたが推測したいと思っていたタイムゾーンおよび/またはdatetimekindを意識していませんでした。私はそれを 'DateTime'sとして' yield'となるMemberDataで置き換えることを提案したいと思います。 –

+0

日時の解析には非特異的な種類があり、ほとんどの場合(少なくとも私の現在のプロジェクトでは)十分です。それは、DateTime dt = new DateTime(2011、1、1)のようにdatetimeを構築するのと同じです。ええ、それはDateTimeOffsetを取得する手助けをしません。あなたが言及したアプローチの例をあなたに教えてください。 – Wijitha

答えて

1

上.netcoreプロジェクトにxUnitフレームを使用しています: -

static object[][] CorrectData 
{ 
    new object[] { "title 1", "testing 1", 1, "Educational", new DateTime(2017,3,1), new DateTime(2018,12,31))], 
    new object[] { "title 2", "testing 2", 2, "Self Employment", new DateTime(2017, 2, 1), new DateTime(2018, 2, 28)} 
} 

[Theory, MemberData(nameof(CorrectData))] 
public async Task WhenPassingCorrectData_SuccessfullyCreate(string title, string description, int categoryId, string category, DateTime startDate, DateTime endDate) 
{ 

} 

(あなたがすることもできあなたが通常yield return enumerator syntaxで行うIEnumerable<object[]>を返すようにしてください。しかし、私は上記のC#が現在提供している最も読みやすい構文であると信じています)

+0

Brilliant!これは、それを行います、ありがとう! – Wijitha

関連する問題