MSTestが通過している間に、XUnitがユニットテストで例外をキャッチできない理由を理解していないプロジェクトがあります。XUnitとMSTestのExpectedExceptionが異なる結果を返す
ここは私のダミーコードです。
私のプライベートメソッドEnumerableYieldReturnを使用して、そのロジックをパブリックメソッドYieldReturnListに直接配置すると、XUnitテストが成功し、MSTestが失敗するという結果になります。
[TestClass]
public class MSTestRunner
{
[TestMethod]
[ExpectedException(typeof(ArgumentException))]
public void MSTestUsingExpectedException()
{
var sut = new YieldReturn();
sut.YieldReturnList(null);
}
}
public class XUnitRunner
{
[Fact]
[ExpectedException(typeof(ArgumentException))]
public void XUnitUsingExpectedException()
{
var sut = new YieldReturn();
sut.YieldReturnList(null);
}
}
public class YieldReturn
{
public IEnumerable<string> YieldReturnList(int? value)
{
if (value == null)
throw new ArgumentException();
return EnumerableYieldReturn((int)value);
}
private IEnumerable<string> EnumerableYieldReturn(int value)
{
var returnList = new List<string>() { "1", "2", "3" };
for (int i = 0; i < value; i++)
{
yield return returnList[i];
}
}
}
...私はsut.YieldReturnListからの戻りオブジェクトを割り当て、それを反復処理しようとすることで渡すためにそれらの両方を得ることができますが、1つのフレームワークが通過していると他が失敗する理由は説明していない
+1。最後のセンテンスの結果は、パブリックメソッドを2つの部分に分けることが有効であることです。最初の部分は検証を行い、2番目の呼び出しは 'yield 'を行います。そうすれば、検証は即座に行われます。 –