【发布时间】:2016-03-11 11:45:31
【问题描述】:
我需要对Class Library (Universal Windows) 进行单元测试,但在“添加新项目”窗口中,我只看到了这个:
这个项目使用 App Container 运行所有测试,它总是打开一个 App。由于我不需要所有开销,我想知道是否有办法仅对 UWP 库进行单元测试。
【问题讨论】:
标签: c# unit-testing visual-studio-2015 uwp
我需要对Class Library (Universal Windows) 进行单元测试,但在“添加新项目”窗口中,我只看到了这个:
这个项目使用 App Container 运行所有测试,它总是打开一个 App。由于我不需要所有开销,我想知道是否有办法仅对 UWP 库进行单元测试。
【问题讨论】:
标签: c# unit-testing visual-studio-2015 uwp
快速回答是,如果您需要测试与 UI 相关的类,则需要使用这种“单元测试”。但是,如果您有要测试的逻辑 - 将其提取到可移植库 (PCL) 并使用普通的旧单元测试框架独立测试。
【讨论】:
现在可移植类库 - 现在在 Visual Studio 中称为“类库(旧版可移植)” - 是“旧版”,我认为这个问题的答案略有变化。
如果您想为 UWP 应用的非 UI 相关逻辑编写单元测试,请将其提取到 .NET 标准类库中。 UWP 应用可以毫无问题地引用 .NET Standard 2.0 类库。
要实际测试类库 (.NET Standard),您需要创建一个 NUnit/xUnit/MSTest 项目 (.NET Core) 并添加对您的类库 (.NET Standard) 的引用。
一旦我的解决方案开始工作,我今天就写了a short blog post。
【讨论】:
在项目中添加类库并添加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);
}
【讨论】: