I use CAKE 0.21.1.0.
My build.cake script loads another .cake script: tests.cake.
In tests.cake, I have a class called TestRunner. TestRunner has a method called RunUnitTests(), which executes unit tests using the VSTest method provided by CAKE.
In build.cake, I create several instances of TestRunner. Whenever I invoke the RunUnitTests() method on any one of the instances, I see the following error message:
error CS0120: An object reference is required for the non-static field, method, or property 'VSTest(IEnumerable<FilePath>, VSTestSettings)'
I think this is because I need to call VSTest on an explicit instance of CakeContext in tests.cake.
My question is: How can I ensure that my tests.cake script shares the same CakeContext instance as my build.cake script? What should I do to get tests.cake to compile?
EDIT:
In response to devlead's reply, I have decided to add more information.
I followed devlead's suggestion and changed my RunUnitTests() method signature to:
public void RunUnitTests(ICakeContext context)
In build.cake, one of my tasks does the following:
TestRunner testRunner = TestRunnerAssemblies[testRunnerName];
testRunner.RunUnitTests(this);
where TestRunnerAssemblies is a read-only dictionary in tests.cake, and testRunnerName is a previously-defined variable. (In build.cake, I have inserted #l "tests.cake".)
Now I see this error message:
error CS0027: Keyword 'this' is not available in the current context
What am I doing wrong?
EDIT:
Never mind, I need to learn how to read more carefully. Instead of passing in this, I passed in Context instead, as devlead originally suggested. Now the RunUnitTests method can be invoked without issue.