Unit testing
Writing a unit test
[TestClass]
public class UnitTest1
{
private static RunspaceConfiguration config;
private static Runspace runspace;
private static Pipeline pipe;
private static Command command;
[ClassInitialize]
public static void TestFixtureSetup(TestContext context)
{
config = RunspaceConfiguration.Create();
PSSnapInException warning;
config.AddPSSnapIn("SnapinName", out warning);
runspace = RunspaceFactory.CreateRunspace(config);
runspace.Open();
}
[ClassCleanup]
public static void TestFixtureTeardown()
{
runspace.Close();
}
[TestInitialize]
public void Setup()
{
pipe = runspace.CreatePipeline();
command = new Command("CommandName");
pipe.Commands.Add(command);
}
[TestMethod]
public void TestMethod1()
{
command.Parameters.Add(new CommandParameter("ParameterName", "Value"));
var psObject = pipe.Invoke();
}
}
Snapin couldn't be found
I wrote a unit test against one of my commands but it couldn't find my snapin, I got the following exception:
System.Management.Automation.PSArgumentException: System.Management.Automation.PSArgumentException: The Windows PowerShell snap-in '...' is not installed on this computer..
I could use my snapin from Powershell command line.
Solution
Add the following lines as post-build events:
c:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe $(TargetPath)
c:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe $(TargetPath)
Both 32-bit and 64-bit installation will happen this way.
Cause
Visual Studio 2012 is a 32-bit process. I registered with 64-bit install util only. Now I register both versions.
No comments:
Post a Comment