我对 mstest.exe 处理测试DLL的app.config文件的方式感到有些困惑。
实验项目1:
一个简单的非测试DLL。 (它只会从自己的app.config文件中读取和打印应用程序设置值。
一个主EXE文件,它调用DLL来打印其配置值。
实验项目2:
单元测试DLL,它只包含一个测试方法,用于从自己的app.config文件中读取应用程序设置值并将其写入文件。
我使用mstest.exe来调用单元测试DLL。
结果:
对于1.不打印DLL的配置值。
对于2. DLL自己的配置值被成功读取并写入文件。
那么, mstest.exe 是否有什么特别之处?
感谢。
我使用SOS.dll通过我的单元测试DLL进行调试。我发现,对于每个Unit Test DLL,都会创建一个单独的App Domain。这些应用程序域与名称 vstesthost.exe 的应用程序域不同。 我认为配置特定于App Domain 。 Mstest.exe将为每个测试DLL创建一个App Domain,并分别将其自己的配置文件加载到App Domain中。
希望有人能给出更自信的解释。
如何将配置文件加载到AppDomain中? - 要将配置文件加载到AppDomain,请使用:
AppDomainSetup ad2setup = new AppDomainSetup();
ad2setup.ConfigurationFile = @“config 文件路径“;
答案 0 :(得分:1)
是的,mstest.exe有一些特别之处。它会将所有引用dll复制到另一个目录并从那里执行(我不知道为什么会这样做,因为像NCover这样的工具只是从bin文件夹运行测试)。因此,除了DLL之外,您还必须配置您希望复制的任何其他内容。执行此操作的标准方法是在.testrunconfig文件中指定部署项。您可以通过转到测试/编辑测试运行配置/部署来完成此操作。您可以使用“添加文件...”按钮添加配置文件。