Pet*_*ham 21 visual-studio-2012
我对VS2012项目进行了一些C#单元测试,该项目使用DllImport pinvoke调用VS2010 c ++ DLL.
作为测试项目的预构建事件,我将最新版本的DLL复制到二进制项目进行测试.
如果vstest.discoveryengine正在运行,则会反复失败.似乎'发现引擎'正在加载测试并对DLL保持锁定.
如果我杀了vstest发现引擎,那么我可以构建并运行测试.否则构建失败,VS2012提供运行以前的版本(模型对话框没有'不再显示此消息'选项)
我可以做些什么来强制测试项目在没有实际运行测试时卸载DLL,或者禁用后台发现可执行文件?
我已经通过创建一个名为Kealakekua的可执行文件来破解了一种解决方法,它可以杀死vstest.discoveryengine.x86,vstest.executionengine.x86,并且作为预构建事件的第一部分,它可以复制文件并构建,但是更喜欢不要为我的文件打视觉工作室.
小智 1
我遇到了类似的问题,我创建了一个“测试”项目,但实际上没有任何测试。(作为一名 C++ 库开发人员,我想确保某些标头能够在启用 CLR 的情况下进行编译,因此我制作了一个假 CLR 项目,仅使用 CLR 编译它们。如果编译成功,则通过。)创建的 DLL 正在被由 vstest.discoveryengine 无限期地保持打开状态。
我通过向项目添加忽略的测试来修复它。我认为 vstest.discoveryengine 将保留该 dll,直到它找到 dll 中的所有测试,但如果没有找到测试,那么它将永远保留它。
我添加的测试(我认为这是默认测试)注意 TEST_IGNORE() 以确保它不被执行:
#include <CppUnitTest.h>
namespace CLRTests
{
TEST_CLASS(CLRTestsClass)
{
public:
BEGIN_TEST_METHOD_ATTRIBUTE(CLRTest1)
TEST_OWNER(L"")
TEST_DESCRIPTION(L"")
TEST_PRIORITY(1)
TEST_IGNORE()
END_TEST_METHOD_ATTRIBUTE()
TEST_METHOD(CLRTest1)
{
// TODO: Your test code here
}
};
}
Run Code Online (Sandbox Code Playgroud)
我希望这在你的情况下是可能的。
| 归档时间: |
|
| 查看次数: |
5211 次 |
| 最近记录: |