C# 如何在ASP.NETMVC5项目中编写单元测试?
我有一个项目是在ASP.NET MVC 5框架之上用c#编写的。我建立了一个用于处理依赖注入的IoC 我需要写一些测试用例来帮助我测试我的项目。我在解决方案中添加了一个新项目(单元测试项目(.NET Framework)),以进行测试。在我的第一个测试类中,我需要利用我的C# 如何在ASP.NETMVC5项目中编写单元测试?,c#,asp.net-mvc,unit-testing,unity-container,C#,Asp.net Mvc,Unit Testing,Unity Container,我有一个项目是在ASP.NET MVC 5框架之上用c#编写的。我建立了一个用于处理依赖注入的IoC 我需要写一些测试用例来帮助我测试我的项目。我在解决方案中添加了一个新项目(单元测试项目(.NET Framework)),以进行测试。在我的第一个测试类中,我需要利用我的Ioc容器来解决依赖关系 我试图为我的测试类进行构造函数注入,但我得到了一个错误,指出有一个无参数构造函数 如何正确设置测试类,使依赖项从IoC容器初始化并准备好进行测试 这是我的第一节考试课 [TestClass] publi
Ioc
容器来解决依赖关系
我试图为我的测试类进行构造函数注入,但我得到了一个错误,指出有一个无参数构造函数
如何正确设置测试类,使依赖项从IoC
容器初始化并准备好进行测试
这是我的第一节考试课
[TestClass]
public class AnnouncerTests
{
private static IAnnouncer Accouncer;
[ClassInitialize]
public static void SetUp(TestContext context)
{
// this does not work
var container = UnityConfig.GetConfiguredContainer();
Accouncer = new Announcer(container);
}
[TestMethod]
public void Multiple_Events_Fire_When_Event_Rises()
{
var user = new User()
{
FirstName = "First Name Test",
LastName = "Last Name Test"
};
Accouncer.Announce(new UserWasCreated(user));
// Assert .....
}
}
如何从测试类内部解析IoC中的类型?您不需要在测试中使用容器。该容器仅用于解决应用程序中的依赖关系,没有理由在测试中使用它 对于测试类,您必须模拟依赖项。有很多用于模拟和创建测试数据的库:Moq、NSubstitute、Autofixture
发布关于如何在mvc中使用Moq测试控制器的帖子您不需要在测试中使用容器。该容器仅用于解决应用程序中的依赖关系,没有理由在测试中使用它 对于测试类,您必须模拟依赖项。有很多用于模拟和创建测试数据的库:Moq、NSubstitute、Autofixture
关于如何在mvc中使用Moq测试控制器的帖子如果您要使用真实对象(因为您想设置Unity,所以可能要这样做),那么您将同时测试代码的多个位。这违背了单元测试的目的。在单元测试中,您应该准确地确定要测试的公共方法(称为System Under test或SUT)。任何已经存在的外部依赖都应该被模拟,不要使用真正的实现。这将隔离您的测试,以便您可以严格控制外部位对您的测试所做的操作,以便您可以模拟预期的和意外的行为,以确保SUT工作。如果您要使用真实的对象(您可能会这样做,因为您想建立Unity),那么您将同时测试代码的多个位。这违背了单元测试的目的。在单元测试中,您应该准确地确定要测试的公共方法(称为System Under test或SUT)。任何已经存在的外部依赖都应该被模拟,不要使用真正的实现。这将隔离您的测试,以便您可以严格控制外部位对您的测试所做的操作,从而可以模拟预期和意外的行为,以确保SUT正常工作。