デバッグビルドで渡すが、正しいリリースビルドで失敗する単体テストのコードがあります。ただし、JetBrains dotCoverを使用して実行すると、同じテストがデバッグモードとリリースモードの両方で実行されます。dotCoverを使用したときのテスト結果が一致しません。
バックグラウンドのビットを与えるために、違反テストコードがあります。これは、リリースビルドで失敗した理由を説明するためのものです。基本的に、コード最適化によるスタック情報の減少によるものです。
using System.Diagnostics;
using NUnit.Framework;
namespace DotCoverTest
{
[TestFixture]
public class TestLogger
{
[Test]
public void GetCurrentClassLoggerReturnsLoggerWithOwningTypeName()
{
Assert.AreEqual(Logger.GetCurrentClassLogger(), GetType().Name);
}
}
public class Logger
{
public static string GetCurrentClassLogger()
{
return new StackFrame(1, false).GetMethod().DeclaringType.Name;
}
}
}
編集:私はカバレッジ・ツールの有無にかかわらず同一の試験結果を得るように私は私のビルドを設定することができますどのように 任意のアイデア?
注:この質問は、最初はTeamCityの問題であると信じられていましたが、そうではありません。
TeamCityのリリースビルドは、実際にリリースDLLを使用していて、デバッグビルドではありませんか? – Pedro
単体テストを実行しているビルドスクリプトを見ておくと便利です –
返信ありがとうございました - 元の投稿の問題に関する詳細を追加しました – MickG