【问题标题】:How to unit test assemblies targeted at different platforms (64bit and 32bit) in visual studio如何在 Visual Studio 中对针对不同平台(64 位和 32 位)的程序集进行单元测试
【发布时间】:2012-01-21 00:53:12
【问题描述】:

我有一个针对不同平台(64 位和 32 位)的 Visual Studio C# 项目。我还对这个项目进行了广泛的单元测试。该项目的性质是,它生成的程序集因平台而异(不是完全限定的程序集名称,无论目标平台如何,程序集名称都是相同的)。我现在想对这些程序集进行单元测试。做到这一点的最佳方法是什么?另请注意,我必须在 hudson 上运行测试报告(代码覆盖率和单元测试)。当前的实现有两个不同的项目,用于两个不同的平台,因此测试运行文件夹(具有 in /out 目录的那个)不会与不同图像格式的程序集混淆。请注意,我并不期待“如何在 Visual Studio 上进行单元测试、执行代码代码覆盖”的答案。我的问题是“在 Visual Studio 中对针对不同平台的程序集进行单元测试的最佳和最简单的方法是什么”。

【问题讨论】:

    标签: .net unit-testing code-coverage 32bit-64bit vs-unit-testing-framework


    【解决方案1】:

    对针对目标的程序集进行单元测试的最佳和最简单的方法是什么 Visual Studio 中的不同平台。

    您是否尝试过在 x86 和 x64 操作系统上运行单元测试?尽管我应该指出,除了一小部分之外,您的代码的行为将完全相同,两个重要的例外是使用注册表和处理特定于平台的不安全代码(即句柄)。

    老实说..你似乎已经知道你需要做什么了。

    【讨论】:

      【解决方案2】:

      如果可能的话,我实际上会将程序集制作成 Any-CPU(当然,您可能会有一些 32/64 互操作,这意味着您已经设置了 CPU 目标,否则让它们与 CPU 无关),并让执行进程决定在架构上,即 32/64 位。这将迅速减少您必须测试的组件数量。

      MSTest (VS2010) 应该能够同时处理 32 和 64,因为它将这项工作适当地分配给 QTAgent(32).exe。 NUnit 有 2 种控制台类型,一种在 any-cpu 上运行,用于在 32 和 64 上运行,另一种在 32 位上固定,用于在 64 位平台上测试 32 位程序集。其他测试工具可能有自己的方法或使用我描述的两种方法之一。

      您可以在 hudson 中使用的覆盖工具:

      1. NCover - 商业工具(句柄 32 和 64)
      2. OpenCover - 一个开源工具(处理 32 和 64)

      还有其他可能是合适的,但我没有使用它们,所以我无法评论它们是否适合通过 hudson 使用,即也许 Visual Studio 中的那个可以是命令行驱动的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-09-23
        • 1970-01-01
        • 2012-05-12
        • 2018-09-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多