使用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从其他程序集运行测试

您可以尝试创建批处理脚本,它可以为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