首先,这里是一个演示项目的链接,该示例展示了手头的问题:
handleSubmit
简而言之,当从Visual Studio中运行测试时,一切都很好。如果我们尝试使用MTest.exe运行相同的测试,如下所示:
https://github.com/dsidirop/MTestStructureMapIssue.git
然后我们在测试类'DummyTest'的构造函数中得到以下错误:
"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\MsTest.exe" /nologo "/testcontainer:MTestStructureMapIssue.Tests.dll"
此错误消息背后的罪魁祸首似乎是MSTest.exe由于某些原因禁止扫描某些dll,因为尽管我们确实使用了该属性,但它甚至没有将它们复制到“测试文件夹”中:
StructureMap.StructureMapConfigurationException: No default Instance is registered and cannot be automatically determined for type 'MTestStructureMapIssue.Dummy.Contracts.ISomeDbContext'
There is no configuration specified for MTestStructureMapIssue.Dummy.Contracts.ISomeDbContext
1.) Container.GetInstance<MTestStructureMapIssue.Dummy.Contracts.ISomeDbContext>()
at StructureMap.SessionCache.GetDefault(Type pluginType, IPipelineGraph pipelineGraph)
at StructureMap.Container.GetInstance[T]()
at MTestStructureMapIssue.Tests.DummyTest..ctor() in C:\VS\MTestStructureMapIssue\Code\MTestStructureMapIssue.Tests\DummyTest.cs:line 23.
如何才能优雅地克服这一点?
答案 0 :(得分:0)
我已经找到一种解决方法来满足MSTest的需求(考虑到[DeploymentItem]不能解决问题):
public DummyTest()
{
foreach (var file in Directory.GetFiles("../../.."))
{
try
{
File.Copy(file, Path.Combine(".", Path.GetFileName(file)));
}
catch
{
}
}
...
此代码段会将“ bin”目录中的所有文件(dll,配置等)复制到MSTest.exe使用的测试文件夹中。