如何为以下方法编写单元测试?

时间:2013-10-29 04:22:00

标签: c# nunit envdte

public List<TempProject> GetActiveProjects()
{
    foreach (Project project in _applicationObject.DTE.Solution.Projects)
    {
        if (project.FullName.EndsWith(".csproj"))
            projects.Add(new TempProject(project));
    }
    return projects;
}

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

  1. 向您正在测试的班级提供_applicationObject的模拟实例。这将允许您设置不同的项目集(google for dependency inversion,mocking,Moq)。
  2. 编写测试,用于在解决方案中没有项目时验证是否返回空列表。
  3. 编写测试,如果解决方案中没有C#项目,则验证是否返回空列表。
  4. 编写测试,验证所有C#项目是否已添加到结果中。
  5. 如果您只需要从解决方案中获取数据,那么BTW会考虑依赖于解决方案对象而不是应用程序对象。这将允许您轻松地模拟项目集并在获取项目时避免train wreck

    foreach (Project project in _solution.Projects)