私はCAKE 0.21.1.0を使用します。別の.cakeファイルにCakeContextを渡す
My build.cake
スクリプトに別の.cake
スクリプト:tests.cake
が読み込まれます。
tests.cake
には、TestRunner
というクラスがあります。 TestRunner
には、RunUnitTests()
というメソッドがあり、VSTest
メソッドprovided by CAKEを使用して単体テストを実行します。
build.cake
では、私はTestRunner
のいくつかのインスタンスを作成します。
error CS0120: An object reference is required for the non-static field, method, or property 'VSTest(IEnumerable<FilePath>, VSTestSettings)'
私はtests.cake
にCakeContext
の明示的なインスタンスにVSTest
を呼び出す必要があるため、これがあると思う:私はインスタンスのいずれかにRunUnitTests()
メソッドを呼び出すたびに、私は次のエラーメッセージが表示されます。
質問:私のtests.cake
スクリプトが同じCakeContext
インスタンスを私のbuild.cake
スクリプトと共有するにはどうすればよいですか? tests.cake
をコンパイルするにはどうすればよいですか?
EDIT:
devlead's replyに応じて、私はより多くの情報を追加することにしました。
私はdevleadの提案に従い、に私のRunUnitTests()
メソッドシグネチャを変更:build.cake
で
public void RunUnitTests(ICakeContext context)
、私の仕事の一つは、次の処理を行います
TestRunnerAssemblies
がで読み取り専用の辞書です
TestRunner testRunner = TestRunnerAssemblies[testRunnerName];
testRunner.RunUnitTests(this);
tests.cake
、およびtestRunnerName
は、あらかじめ定義された変数です。 (build.cake
では、私は#l "tests.cake"
が挿入されている。)
は、今私は、このエラーメッセージが表示さ:
error CS0027: Keyword 'this' is not available in the current context
私が間違っているのは何を?
EDIT:
気にしないで、私はもっと慎重に読む方法を学ぶ必要があります。代わりにthis
を渡す代わりに、私はContext
に代わって、devleadがもともと提案したとおりに渡しました。今すぐRunUnitTests
メソッドは問題なしで呼び出すことができます。
'this'を使用しないでください、ここに示すように代わり、' Context'を使用します。https://github.com/cake -contrib/Cake.Recipe/blob/develop/setup.cake#L13また、@devleadの例のように –