1
MSDNのアクションとラムダ式については読んでいますが、まだ紛失しているものがあります。私は次のパブリッククラスを持っています。アクションとラムダを使ったNUnitテスト
public class ExitChecker
{
public Action EnvironmentExitAction { get; set; }
public ExitChecker(string[] args)
{
if (string.Compare(args[0], "-help", true) == 0)
{
EnvironmentExitAction =() => Environment.Exit(0);
}
}
}
私は次のテストクラスを持っています。
[TestFixture]
public class AVSRunnerConsoleAppTests
{
[Test]
public void TestConsoleAppWithHelpArg()
{
string[] args = new string[1] { "-help" };
ExitChecker exitchecker = new ExitChecker(args);
bool exitZeroOccured = false;
exitchecker.EnvironmentExitAction =() => exitZeroOccured = true;
Assert.That(exitZeroOccured, Is.True);
}
}
実際にEnvironment.Exitを呼び出さずにEnvironment.Exitをテストしようとしています。すべてコンパイルしてうまく動作するようですが、Lambda式のexitZeroOccuredをtrueに変更することはできません。誰かが私を正しい方向に向けることができますか?
ワウ私はそれを逃したとは信じられません。もう少し読書をするためにオフ...束に感謝。私は実際にラムダ式自体でInvokeが起こったと考えました。 – cbohannon
Pff、心配しないで...私はいつもそうしています。正直言って、あなたのテストは本当に何もしていません。あなたは 'Action'を呼び出すことをテストしています。これは明らかに.NETクラスなので実行します。テストされたコードの全体としての 'Environment.Exit(0);'コードはテスト自体に存在しません。 – Brandon
ハ!真実。私はいくつかの異なるテストオプションを試してきました。 Environment.Exit(0)はテストを殺し、おそらくテストするべきものではありませんが、試してみると思いました。 – cbohannon