Visual Studio 2012の単体テスト、より正確にはコードカバレッジに問題があります。ターゲットコードは次のとおりです。
var someDeals = allDeals
.Where(i => i.Number != null && !i.Number.StartsWith(SomeString))
.Select(i => new DealInfoDto
{
CurrentDebtAmount = i.CurrentDebtAmount,
Date = i.Date,
NextMonthlyPaymentDate = i.NextMonthlyPaymentDate,
Number = i.Number,
AccountNumber = i.AccountNumber,
})
.ToArray();
分析コードカバレッジを実行すると、2行目(i.Number != null && !i.Number.StartsWith(SomeString)
)のラムダ式が部分的にタッチされた領域であり、100%のカバレッジを取得できないことが示されます。しかし、この式は評価されていると確信しています(SELECT内の式はOKなので、WHERE内の式はtrueであり、これは&&ステートメントの両方の部分が変更されたことを意味します。また、データをチェックしましi.Number != null
た!i.Number.StartsWith(SomeString)
。
このブロックがカバーされていないのはなぜですか?
PS私Where
は2つの表現に分割し、すべてがOKになりました。しかし、それは醜く見え、1つだけの方が良いでしょうWhere
:
allDeals
.Where(i => i.Number != null)
.Where(i => !i.Number.StartsWith(CardAccountIdentifier))