如何从另一个项目

时间:2015-09-09 11:30:00

标签: c# unit-testing user-interface powershell

我有一个单独的测试项目来测试我的cmdlet项目,该项目的调用如下:

pSCmdletObject.InvokeCommand.InvokeScript("Write-Host " + outputString); and
pSCmdletObject.InvokeCommand.InvokeScript("Read-Host");

我使用了C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.0 \ Samples \ sysmgmt \ WindowsPowerShell \ csharp \ Host03

中给出的PSHostUserInterface,PSRawUserInterface,PSHost实现示例

问题在于:

TestClass.cs(Test项目):

using (Runspace runSpace = RunspaceFactory.CreateRunspace(new Host(new TestClass())))
{
    runSpace.Open();

    using (Pipeline pipeline = runSpace.CreatePipeline())
    {
        pipeline.Commands.Add("CustomCommand-Get");
        var output = pipeline.Invoke();   //<<< (1)
    }
}

在“(1)”调用“Invoke”时,调用实际项目中编写的“CustomCommand”实现。在实际cmdlet项目的“CustomCommand”的“ProcessRecord()”中,当调用“Read-Host”时,项目只是等待我目前无法提供的输入,因为我无法找到方法。我的测试项目有Invoke调用,我想避免使用控制台。我想以某种方式根据测试用例对输入进行硬编码,因为实际的Custom Cmdlet项目是一个完全不同的项目,可以独立运行。可以这样做吗?如果是这样,怎么样?还有其他方法可以达到这个目的吗?

提前致谢

0 个答案:

没有答案