【问题标题】:How to write unit test for the following method? [closed]如何为以下方法编写单元测试? [关闭]
【发布时间】:2013-10-29 04:21:59
【问题描述】:
public List<TempProject> GetActiveProjects()
{
    foreach (Project project in _applicationObject.DTE.Solution.Projects)
    {
        if (project.FullName.EndsWith(".csproj"))
            projects.Add(new TempProject(project));
    }
    return projects;
}

【问题讨论】:

  • 为此编写测试有哪些具体问题?

标签: c# nunit envdte


【解决方案1】:
  1. 打开 Visual Studio
  2. 创建一个新的库项目(假设是 C#)
  3. 添加对单元测试框架的适当引用(从标签看来,您需要 NUnit - 获取它的最简单方法是 pull it from NuGet)。
  4. 添加一个类来保存 OP 中代码的单元测试。
  5. 使用[TestFixture] 属性装饰测试类。
  6. 添加一个新的公共方法,它返回void 并且不接受任何参数。这将是您的测试方法。
  7. 使用[Test] 属性修饰测试方法。
  8. 在测试方法的主体中编写单元测试。
  9. 从 4 开始重复,直到你有足够的单元测试。

【讨论】:

    【解决方案2】:
    1. 为您正在测试的类提供_applicationObject 的模拟实例。这将允许您设置不同的项目集(google for dependency inversion、mocking、Moq)。
    2. 编写测试,验证当解决方案中没有项目时返回空列表。
    3. 编写测试,验证如果解决方案中没有 C# 项目,则返回空列表。
    4. 编写测试以验证所有 C# 项目都已添加到结果中。

    顺便说一句,如果您只需要从解决方案中获取数据,请考虑依赖解决方案对象而不是应用程序对象。这将使您可以轻松地模拟项目集并在获取项目时避免train wreck

    foreach (Project project in _solution.Projects)
    

    【讨论】:

      猜你喜欢
      • 2018-05-17
      • 1970-01-01
      • 2021-06-23
      • 1970-01-01
      • 2019-02-15
      • 1970-01-01
      • 2018-12-15
      • 2011-11-14
      • 1970-01-01
      相关资源
      最近更新 更多