0

私は次のようにMSTestプロジェクト内でNUnitアサーションを使用しています(注:これはDave Falknerの回答へのコメントを参照してください):

using Microsoft.VisualStudio.TestTools.UnitTesting;
using MSTestExtensions;
using Assert = NUnit.Framework.Assert;
using Is = NUnit.Framework.Is;

これは単体テストではうまく機能しましたが、統合テストでは問題が発生しています。私の単体テストではMSTestExtensionsを使用していなかったため、MSTestExtensionsが原因である可能性があります。さらに、MSTestExtensions usingステートメント、クラスの継承MSTestExtensionsTestFixtureステートメント、および属性をコメントアウトすると、[TestTransaction]この問題は発生しません。usingステートメントを追加し直しても、問題は発生しません。[TestTransaction]属性を追加しても、問題は発生しません。テストクラスのMSTestExtensionsTestFixtureから継承すると、問題が発生します。

基本的に、問題は、失敗する状況で次のコードを実行すると(たとえば、actualPartNumbersリストに2つの部分が含まれているのに対し、期待されるリストには1つしか含まれていない)、AssertionExceptionがMSTestによって処理されないことです。

Assert.That(actualPartNumbers, Is.EquivalentTo(expectedPartNumbers));

したがって、IDEはテストに失敗するのではなく、スローされた例外で停止します。これが起こらず、テストが正常に失敗する場合があります。ただし、ほとんどの場合、IDEはスローされた例外で停止します。何か案は?

参考:[TestTransaction]各テストの後にデータベースのロールバック(属性)を 実行できるように、MSTestExtensionsを使用しています。これは、MbUnitのロールバック機能に似ています。流暢なスタイルの方が好きなので、MSTestのアサートをNUnitのアサートでオーバーライドしています。最後に、NUnitに問題があるため、MSTestを使用しています。特にMicrosoftMolesと競合し、log4netを使用するサードパーティの参照と競合します。切り替えた場合にどちらのフレームワークでも実行できるように、ユニット/統合テストをセットアップするために最善を尽くしています。しかし今のところ、MSTestは最も面倒ではないようで、IDEへの統合は非常に優れています。

4

1 に答える 1

1

テストを開始するために使用しているキーの組み合わせの問題である可能性があります:ctrl + R、ctrl+Tとctrl+R、T?

http://stevesmithblog.com/blog/run-mstest-without-breaking-on-exceptions-in-vs2010/

于 2010-10-12T13:37:27.140 に答える