.net MSTest.exe生成项目,但不';不部署设置文件

.net MSTest.exe生成项目,但不';不部署设置文件,.net,visual-studio,mstest,.net,Visual Studio,Mstest,我有一个测试项目,我想从MSTEST执行。此项目有一个App.config和一个ConnectionString.config文件。ConnectionString部分被重定向到后面的 <connectionStrings configSource="ConnectionStrings.config" /> 假设MSTest.exe在路径中,它运行,它构建项目并创建一个目录,如xxxxxxxxxxx\u yyy-MM-DD HH\u MM-SS,但输出子目录不包含Connectio

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

<connectionStrings configSource="ConnectionStrings.config" />

假设MSTest.exe在路径中,它运行,它构建项目并创建一个目录,如
xxxxxxxxxxx\u yyy-MM-DD HH\u MM-SS
,但输出子目录不包含ConnectionStrings.config文件(应该根据外观进行复制,对吗?

您可以尝试应用[Deployment Item(“ConnectionStrings.config”)吗]测试类上的属性?

已编辑

所以,在VS2017社区版上,我决定尝试做一个简单的测试来复制您看到的内容,我做到了。从IDE运行它时,
DeploymentItem
属性按预期工作,但不是从
mstest
运行。如果这真的是一个bug的话,我本以为人们以前会看到这一点,但也许人们还没有在VS2017上尝试过那么多

无论如何,最终对我起作用的是创建一个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文件中覆盖它;因为您已经让它将您的ConnectionString.config复制到输出目录,我认为这可能对您有用。或者,如果您不想将它复制到生成中的输出文件夹中,但不想将它复制到输出目录中,您也可以将其设置为
。\..\ConnectionString.config
)我想用
mstest
复制它

然后只需将
/testsettings:
添加到
mstest
命令行执行中


原创帖子

除非我大错特错,否则运行mstest.exe只会运行已构建的测试项目,而不会返回并构建测试项目(这怎么可能?它是一个测试工具,而不是msbuild,您只是将它指向测试DLL,而不是项目文件)。因此,如果您只是在运行mstest,而从未从Visual Studio或通过msbuild或其他任何方式生成项目,则在实际再次生成项目之前,您所做的更改不会生效


您是否可以验证您是否确实使用SMA引用的
DeploymentItem
属性重新构建了测试项目(可以检查上次更新
Tests.DLL
的第一步),然后对新构建的
Tests.DLL运行
mstest
命令。根据我自己的知识和这一点,我希望您会看到配置文件被复制到测试运行目录中,只要该配置文件首先存在。

谢谢。我会尝试告诉您结果mstest.exe创建了一个复制最新版本并使用它运行测试。这里的问题是MSTEST没有复制原始buld文件夹中的一些配置文件。是的,我确实生成了项目,是的,项目版本有必需的文件,但MSBUILD没有将这些字段复制到最终目录。@Y.Ecarri:我能够在我的m我可以用一个testsettings文件让它工作;也许这对你有用。
<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>