C# 单元测试

标签 c# visual-studio-2010 testing

我正在实现以下测试:

[TestMethod]
public void Index_Get_RetrievesAllContributionsFromRepository()
{
    // Arrange
    Contributions Contribution1 = GetContributionNamed("Council", 2003);
    Contributions Contribution2 = GetContributionNamed("Council", 2004);

    InMemoryContributionRepository repository = new InMemoryContributionRepository();
    repository.Add(Contribution1);
    repository.Add(Contribution2);
    var controller = GetHomeController(repository);

    // Act
    var result = controller.Index();

    // Assert
    var model = (IEnumerable<Contributions>)result.ViewData.Model;
    CollectionAssert.Contains(model.ToList(), Contribution1);
    CollectionAssert.Contains(model.ToList(), Contribution2);
    CollectionAssert.xxxxxx(model.ToList().Count, Contribution1, 2);
}

xxxxxx 的最后一个测试是尝试检查 Contribution1 是否有 2 个值,确实如此。请问哪一行代码执行该测试?

c#新手

最佳答案

听起来你只是想要:

Assert.AreEqual(2, model.Count());

但听起来您更好使用:

CollectionAssert.AreEquivalent(new[] { Contribution1, Contribution2 },
                               model.ToList());

...这可以替换您的所有三行。

在这两种情况下,请注意预期值应该是第一个参数,实际值应该是第二个参数。

关于C# 单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11610017/

相关文章:

ruby-on-rails - rails 3 : How to include files from "lib" directory when running tests?

c# - gridview 分页不起作用

c# - IoC 和 .NET 框架

.net - 对具有区域的ASP.NET MVC 2路由进行单元测试在AreaRegistration.RegisterAllAreas()上解决

c++ - 试图让 MongoDB 驱动程序在 Visual Studio 2010 C++ 中工作

testing - 将二进制数据转换为空中数据包?

unit-testing - 单元测试: allow for false-positive or bring duplication

c# - 通知 Gui 数据类已更改

c# - C# 中的 Convert.ToInt32

c# - 程序集 'SomeAssembly, uses ' System.Web.Mvc,Version=4.0.0.0,其版本高于引用的程序集 'System.Web.Mvc,Version 3.0.0.0