【问题标题】:Is there a way to UnitTest a Class Library (Universal Windows) without testing a whole application?有没有办法在不测试整个应用程序的情况下对类库(通用 Windows)进行单元测试?
【发布时间】:2016-03-11 11:45:31
【问题描述】:

我需要对Class Library (Universal Windows) 进行单元测试,但在“添加新项目”窗口中,我只看到了这个:

这个项目使用 App Container 运行所有测试,它总是打开一个 App。由于我不需要所有开销,我想知道是否有办法仅对 UWP 库进行单元测试。

【问题讨论】:

    标签: c# unit-testing visual-studio-2015 uwp


    【解决方案1】:

    快速回答是,如果您需要测试与 UI 相关的类,则需要使用这种“单元测试”。但是,如果您有要测试的逻辑 - 将其提取到可移植库 (PCL) 并使用普通的旧单元测试框架独立测试。

    【讨论】:

    • 要澄清,请转到参考 > 右键单击​​ > 添加参考... > 扩展并添加 Microsoft.VisualStudio.QualityTools.UnitTestFramework 参考。然后正常使用 [TestClass] 和 [TestMethod] 属性。
    【解决方案2】:

    现在可移植类库 - 现在在 Visual Studio 中称为“类库(旧版可移植)” - 是“旧版”,我认为这个问题的答案略有变化。

    如果您想为 UWP 应用的非 UI 相关逻辑编写单元测试,请将其提取到 .NET 标准类库中。 UWP 应用可以毫无问题地引用 .NET Standard 2.0 类库。

    要实际测试类库 (.NET Standard),您需要创建一个 NUnit/xUnit/MSTest 项目 (.NET Core) 并添加对您的类库 (.NET Standard) 的引用。

    一旦我的解决方案开始工作,我今天就写了a short blog post

    【讨论】:

      【解决方案3】:

      在项目中添加类库并添加nUnit nuget库和对你要测试的类库的引用

          [TestMethod]
          public void TestCalculationFruitSmoothie()
          {
              PointsCalculator2.Core.CalculationHelper helper = new PointsCalculator2.Core.CalculationHelper();
      
              int actual = helper.CalculatePoints(1, 25, 4, 6, false);
              int expect = 3;
              Assert.AreEqual(expect, actual);
          }
      

      【讨论】:

        猜你喜欢
        • 2023-01-09
        • 1970-01-01
        • 2015-06-30
        • 2014-07-29
        • 1970-01-01
        • 1970-01-01
        • 2017-09-20
        • 1970-01-01
        • 2017-01-10
        相关资源
        最近更新 更多