使用MSTest从其他程序集运行测试
本文关键字:程序集 运行测试 其他 MSTest 使用 | 更新日期: 2023-09-27 18:17:41
我在这里有一个问题,只要我点击编译,mstest cmd提示符显示,然后它崩溃/消失,我的测试不会得到执行。这是代码:
public void test(String testContainer, String testName)
{
// String Path = @"C:'Program Files'Microsoft Visual Studio 10.0 Common7'IDE'mstest.exe";
String Path = @"C:'Program Files (x86)'Microsoft Visual Studio 11.0'Common7'IDE'mstest.exe";
// String Path = @"C:'Program Files (x86)'Microsoft Visual Studio 11.0'Common7'Tools'VsDevCmd.bat""";
Process myProcess = new Process();
// ProcessStartInfo myProcessStartInfo = new ProcessStartInfo(Path, "/testsettings:local.testsettings /testcontainer:" + testContainer + " /test:" + testName);
ProcessStartInfo myProcessStartInfo = new ProcessStartInfo(Path, "MSTest/testcontainer:" + testContainer + " /test:" + testName + @"/testcategory:""ActionCol""");
myProcessStartInfo.UseShellExecute = false;
myProcess.StartInfo = myProcessStartInfo;
myProcess.Start();
// MessageBox.Show(x + "'n" + y);
}
我是这样调用这个方法的:
private void button3_Click(object sender, EventArgs e)
{
x = @"C:'Users'butoiu.edward'Desktop'Lucru'SimarpiUnitTest'GestcollTestSolution'CodedUITestProject'bin'Debug'GestcollTestProject.dll";
y = "ActionCollInsert";
test(x, y);
}
我做错了什么?这里真的需要一些帮助,提前谢谢
编辑1 -这是一个测试方法看起来像我的其他项目。,忘了说我有两个项目在相同的解决方案下(没有改变什么,但我认为这是值得一提的)
[TestMethod(), TestCategory("ActionCol")]
public void ActionCollInsert()
{
MessageBox.Show("test");
//using the proper map
var actionColTest = new ActionColMap();
//actionColTest.ActionColOpen1();
// actionColTest.ActionColSlider();
actionColTest.ActionColHideCollumns();
actionColTest.ActionColInsert();
actionColTest.ActionColInsertCode();
actionColTest.ActionColInsertDesc();
actionColTest.ActionColSave();
}
EDIT2 -我如何启动DEV-CMD -使用shell从它的快捷方式的位置启动我的cmd为我固定的事情。当我修复这个问题时,出现了一个新的问题。我不能向cmd传递参数,我的意思是什么也没发生。
public void test(String testContainer, String testName)
{
// String Path = @"C:'Program Files (x86)'Microsoft Visual Studio 11.0'Common7'IDE'mstest.exe";
String Path = @"C:'ProgramData'Microsoft'Windows'Start Menu'Programs'Microsoft Visual Studio 2012'Visual Studio Tools'Developer Command Prompt for VS2012.lnk";
Process myProcess = new Process();
// ProcessStartInfo myProcessStartInfo = new ProcessStartInfo(Path, "/testsettings:local.testsettings /testcontainer:" + testContainer + " /test:" + testName);
ProcessStartInfo myProcessStartInfo = new ProcessStartInfo(Path, "MSTest/testcontainer:" + testContainer + " /test:" + testName );
myProcessStartInfo.UseShellExecute = true;
myProcessStartInfo.Arguments = "blah blah"; // - this ain't working !!!!
myProcess.StartInfo = myProcessStartInfo;
myProcess.Start();
}
EDIT3 -我能够启动cmd并传递一些参数给它(来源:传递一个参数给cmd.exe)。但是将路径更改为我的dev cmd提示符不会自动插入参数。需要一些帮助,/c没有影响dev cmd.
ProcessStartInfo proc = new ProcessStartInfo();
proc.FileName = Path;
proc.Arguments = @"/c ping 10.2.2.125";
proc.UseShellExecute = true;
Process.Start(proc);
您可以尝试创建批处理脚本,它可以为mstest构建环境并相应地触发测试
请看下面的例子。您只需要为您的系统
替换vcvarsall.bat的正确路径cd'
cd "Program Files <x86>"'"Microsoft Visual Studio 12.0"'VC
call "vcvarsall.bat"
cd'
C:
Mstest /testcontainer:Test.dll /resultsfile:result.trx