MSTest.exe构建项目但不部署设置文件

时间:2017-06-13 12:57:35

标签: .net visual-studio mstest

我有一个测试项目,我想从MSTEST执行。该项目有一个App.config和一个ConnectionString.config文件。 ConnectionStrings部分被重定向到更晚的部分。

<connectionStrings configSource="ConnectionStrings.config" />

当我运行MSTEST时,项目已构建并且大多数文件都被复制,但ConnectionStrings.config文件不是,尽管其属性始终设置为内容和复制。

VS2015 File Properties

使用此(简单?)命令行从项目目录运行MSTEST.EXE:

MSTest.exe /testcontainer:bin\Debug\Tests.dll /resultsfile:%ts%

假设MSTest.exe在路径中,它运行,它构建项目并创建一个类似XXXXXXXXXXXX_YYYY-MM-DD HH_MM-SS的目录,但输出子目录不包含ConnectionStrings.config文件(应该根据seetings,对吗?)

2 个答案:

答案 0 :(得分:1)

您可以尝试在测试类上应用[部署项目(&#34; ConnectionStrings.config&#34;)]属性吗?

答案 1 :(得分:1)

<强>被修改

所以,在VS 2017社区版上,我决定尝试做一个简单的测试来复制你所看到的内容,我做了。从IDE运行它,DeploymentItem属性按预期工作,但不是mstest。如果它确实是一个错误的话,我本以为人们会看到这个,但也许人们还没有尝试过VS 2017。

无论如何,最终对我有用的是创建一个testsettings文件,其中指定了DeploymentItem。这是我使用的文件:

<TestSettings name="Local" id="00ebe0c6-7b64-49c0-80a5-09796270f111" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
   <Description>These are default test settings for a local test run</Description>
   <Deployment>
     <DeploymentItem filename="ConnectionStrings.config"/>
   </Deployment>
</TestSettings>

如果要指定,还有outputDirectory属性。 DeploymentItem节点似乎与DeploymentItem一样工作,因此文件名需要相对于输出目录(假设您没有在您正在使用的testsettings文件中覆盖它;因为你已经将它的ConnectionStrings.config复制到输出目录了,我认为这对你有用。或者,如果你不想将它复制到你的输出中,你可以把它..\..\ConnectionStrings.config。构建中的文件夹,但确实希望使用mstest复制。

然后只需在/testsettings:<testsettingsfilename>命令行执行中添加mstest

原帖

除非我非常错误,否则运行mstest.exe只运行已经构建的测试项目,并且不会返回并构建测试项目(它怎么可能呢?它是一个测试工具,而不是msbuild,你只是将它指向测试DLL,而不是项目文件)。因此,如果您只是运行mstest而不是从Visual Studio或通过msbuild或其他任何方式构建项目,那么您实际所做的更改将无法实现,直到您再次实际构建项目为止。

您是否可以验证您是否实际使用SMA引用的DeploymentItem属性重新构建了测试项目(可能会检查您的Tests.DLL上次更新为快速的第一步),然后针对新建的mstest运行Tests.DLL命令?根据我自己的知识和answer about copying a file to mstest's test folder,我希望你会看到你的配置文件被复制到测试运行目录中,只要该配置文件首先存在。

相关问题