我在网络上进行了大量研究,并尝试了一些设置,但无法重现在命令行上在Visual Studio 2012中运行MsTest的行为。

我们的解决方案包含许多构建到解决方案级别的相同bin文件夹的项目(例如C:\ MySolution \ bin)-这是被测代码(CUT)。将测试分组到一个单独的项目中,该项目驻留在其自己的解决方案中,并在其自己的bin文件夹中构建(例如C:\ MySolution \ Tests \ bin)。确实有很多插件,因此我们希望MsTest在运行将所有内容复制到TestResults文件夹的测试界面时引用CUT bin文件夹。我们在Visual Studio 2012中确实做到了这一点,方法是编辑.testrunco​​nfig,并将“。\ bin”指定为“要加载的程序集的根文件夹”(在编辑testrunco​​nfig时,在“单元测试”选项卡中)。因此,我们可以在VS2012中加载测试解决方案并在其中运行测试,而不必将bin文件夹内容复制到TestResults目录。

现在,我想创建一个.bat文件,该文件将以与VS2012中相同的方式运行MsTest,以便我们可以省略仅为运行测试而启动Visual Studio的过程。我现在正在研究如何在命令行上执行MsTest,但已经感到非常沮丧。这是我尝试过的(在VS命令提示符下在解决方案级别执行的命令):



这根本不起作用,它甚至找不到Tests.dll需要运行的引用的dll。因此,我重新使用了配置并再次运行它:



仍然没有用。它可以开始测试,但是所有测试都失败了。我收到很多类似的警告



最后,它说:



当我将testrunco​​nfig中的applicationBaseDirectory选项更改为绝对路径(C:\ MySolution \ bin)时,它起作用了。我仍然收到许多警告,例如:



但是无论如何,指定绝对路径并不是真正可行的解决方案。 如何在具有不同但相对于程序集基础目录的命令行上运行MsTest?

我的LocalTestRun.testrunco​​nfig如下:

<?xml version="1.0" encoding="UTF-8"?>
<TestSettings name="Local Test Run" id="...." xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
  <Description>This is a default test run configuration for a local test run.</Description>
  <Deployment>
    <DeploymentItem filename="Tests\....\Resources\" />
  </Deployment>
  <Execution hostProcessPlatform="MSIL">
    <TestTypeSpecific>
      <UnitTestRunConfig testTypeId="....">
        <AssemblyResolution applicationBaseDirectory=".\bin">
           <TestDirectory useLoadContext="true" />
        </AssemblyResolution>
      </UnitTestRunConfig>
      <WebTestRunConfiguration testTypeId="....">
        <Browser name="Internet Explorer 7.0">
          <Headers>
            <Header name="User-Agent" value="Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)" />
            <Header name="Accept" value="*/*" />
            <Header name="Accept-Language" value="{{$IEAcceptLanguage}}" />
            <Header name="Accept-Encoding" value="GZIP" />
          </Headers>
        </Browser>
      </WebTestRunConfiguration>
    </TestTypeSpecific>
    <AgentRule name="LocalMachineDefaultRole">
    </AgentRule>
  </Execution>
</TestSettings>

最佳答案

经过更多搜索之后,我们更改为使用VS2012附带的测试控制台运行程序:



这适用于相对路径applicationBaseDirectory

08-06 01:08