如何对 vsix 项目进行单元测试?
How to unit test a vsix project?
我有一个 Visual Studio 扩展项目。它工作正常,构建到 vsix 中并完成它的工作。我正在使用 VS2017
我想对其进行单元测试。我已经使用 MSTest v2 编写了单元测试。
问题是:当我尝试 build/run 测试项目时,出现一个错误,它没有找到 myProject.dll,显然是因为没有(myProject 构建为 . vsix 文件)。
如何对我的 vsix 项目进行单元测试?
编辑:调试工作正常。
编辑 2:整个输出是 vsmanifest 文件和一个 .vsix 文件。安装和 运行 工作。
答案的 Tl;dr:无法测试 vsix。
你的测试项目应该是一个DLL类型的文件。
例如,在您将其更改为 "CS" 类型的文件后,运行ner 将能够 运行 您的测试
所以我偶然发现了这个 post。问题是 .dll 和 .pdb 文件在 vsix 包中。所以对于单元测试,他们也需要在它之外。
这表明 .csproj 文件中导入的目标存在错误:
<Import Project="$(VSToolsPath)\VSSDK\Microsoft.VsSDK.targets" Condition="'$(VSToolsPath)' != ''" />
此目标在构建 vsix 时删除了 dll 和 pdb。它不应该那样做。现在,vsix 只是一个具有特殊名称的 zip 文件。这样我们就可以解压了。
我在工具文件夹中将 7z.exe 添加到我的解决方案中,并且 运行 在 post 构建操作中添加:
"$(SolutionDir)Toolsz.exe" x -aoa "$(TargetDir)$(TargetName).vsix"
现在我的单元测试工作正常。
我有一个 Visual Studio 扩展项目。它工作正常,构建到 vsix 中并完成它的工作。我正在使用 VS2017
我想对其进行单元测试。我已经使用 MSTest v2 编写了单元测试。
问题是:当我尝试 build/run 测试项目时,出现一个错误,它没有找到 myProject.dll,显然是因为没有(myProject 构建为 . vsix 文件)。
如何对我的 vsix 项目进行单元测试?
编辑:调试工作正常。
编辑 2:整个输出是 vsmanifest 文件和一个 .vsix 文件。安装和 运行 工作。
答案的 Tl;dr:无法测试 vsix。
你的测试项目应该是一个DLL类型的文件。 例如,在您将其更改为 "CS" 类型的文件后,运行ner 将能够 运行 您的测试
所以我偶然发现了这个 post。问题是 .dll 和 .pdb 文件在 vsix 包中。所以对于单元测试,他们也需要在它之外。
这表明 .csproj 文件中导入的目标存在错误:
<Import Project="$(VSToolsPath)\VSSDK\Microsoft.VsSDK.targets" Condition="'$(VSToolsPath)' != ''" />
此目标在构建 vsix 时删除了 dll 和 pdb。它不应该那样做。现在,vsix 只是一个具有特殊名称的 zip 文件。这样我们就可以解压了。
我在工具文件夹中将 7z.exe 添加到我的解决方案中,并且 运行 在 post 构建操作中添加:
"$(SolutionDir)Toolsz.exe" x -aoa "$(TargetDir)$(TargetName).vsix"
现在我的单元测试工作正常。