启动流程对象会导致显示消息框的消息框:
*
参数不能为空。参数名称:来源
*
因此,即使我的应用程序没有发现任何异常,我的代码执行也会暂停。
我认为文件的文件路径可能太长了。 所以我提供了一个更短的路径并将所有文件复制到该目录。但是,我仍有同样的问题。
一旦我执行" process.Start()" ,就会出现问题。
代码:
private void RunTests(ref int passingTests, ref int totalTests, ref int failedTests)
{
var fileName = Path.GetFileName(TEST_DLL_PATH);
var copiedFile = Path.Combine(TEMP_DIRECTORY_PATH, fileName);
//Now Create all of the directories
foreach (string dirPath in Directory.GetDirectories(TEST_DLL_DIRECTORY_PATH, "*",
SearchOption.AllDirectories))
Directory.CreateDirectory(dirPath.Replace(TEST_DLL_DIRECTORY_PATH, TEMP_DIRECTORY_PATH));
//Copy all the files & Replaces any files with the same name
foreach (string newPath in Directory.GetFiles(TEST_DLL_DIRECTORY_PATH, "*.*",
SearchOption.AllDirectories))
File.Copy(newPath, newPath.Replace(TEST_DLL_DIRECTORY_PATH, TEMP_DIRECTORY_PATH), true);
var process = new Process
{
StartInfo = new ProcessStartInfo
{
FileName = @"C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\mstest.exe",
Arguments = string.Format(@"/testcontainer:""{0}"" /resultsfile:""{1}""", copiedFile, TEMP_DIRECTORY_PATH),
UseShellExecute = false,
RedirectStandardOutput = true,
CreateNoWindow = true
}
};
process.Start();
while (!process.StandardOutput.EndOfStream)
{
var line = process.StandardOutput.ReadLine();
if (line.Contains("test(s) Passed") || _count % 5 == 0)
{
var parts = line.Split('/');
passingTests = int.Parse(parts[0]);
totalTests = int.Parse(parts[1].Split(' ')[0]);
failedTests = totalTests - passingTests;
break;
}
}
}
答案 0 :(得分:0)
事实证明,通过我的进程正在运行的单元测试执行的DLL正在抛出异常的GUI对话框。
我最终创建了一个可单元测试的交互界面来处理基于UI与测试自动化的错误消息。