Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Unity、Moq和NUnit—测试中未识别参数的控制器构造函数_C#_Unit Testing_Unity Container - Fatal编程技术网

C# Unity、Moq和NUnit—测试中未识别参数的控制器构造函数

C# Unity、Moq和NUnit—测试中未识别参数的控制器构造函数,c#,unit-testing,unity-container,C#,Unit Testing,Unity Container,我对单元测试非常陌生,所以如果这不是一个很好的问题,我很抱歉 我有一个主要的web项目和一个附带的NUnit测试库。我正在使用Unity将接口注入主项目中的控制器中。例如: public class EquipmentController : Controller { private readonly ILocationRepository locationContext = null; private readonly IRepository<EquipmentC

我对单元测试非常陌生,所以如果这不是一个很好的问题,我很抱歉

我有一个主要的web项目和一个附带的NUnit测试库。我正在使用Unity将接口注入主项目中的控制器中。例如:

    public class EquipmentController : Controller
{
    private readonly ILocationRepository locationContext = null;
    private readonly IRepository<EquipmentCategory> categoryContext = null;
    private readonly IEquipmentRepository equipmentContext = null;
    private readonly IRecordRepository recordContext = null;

    public EquipmentController(ILocationRepository locationRepo, IRepository<EquipmentCategory> categoryRepo, IEquipmentRepository equipmentRepo, IRecordRepository recordRepo)
    {
        this.locationContext = locationRepo;
        this.categoryContext = categoryRepo;
        this.equipmentContext = equipmentRepo;
        this.recordContext = recordRepo;
    }
我在测试项目中引用了Unity,甚至添加了Bootstrapper.cs(不确定是否有必要,但我正试图解决上述问题)。我很确定我做了一些非常错误的事情,但是我刚刚开始冒险进行单元测试,并且有点困难


谢谢您的建议。

您的测试课程名为
EquipmentController
,您的测试课程名也是

将测试类重命名为
EquipmentControllerTests
或类似的测试


(错误消息就是线索;请注意,它指的是
Tests.EquipmentController
)。

您确定已将web项目引用到测试项目吗?编辑:您还可以检查两个项目的.Net版本。若web项目有更高的网络版本,那个么它可能会发生。是的,我只是仔细检查了一下。web项目显示在“引用”下。为了清楚起见,我在我的帖子中添加了测试的using语句。两者都是.NET4.5。谢谢,非常感谢!这本应该是显而易见的,但我忽略了这一点。伟大的眼睛!
using NUnit.Framework;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Practices.Unity.Mvc;
using Microsoft.Practices.Unity.ObjectBuilder;
using Microsoft.Practices.Unity.StaticFactory;
using Moq;
using ITEquipmentDatabase;
using ITEquipmentDatabase.Models;
using ITEquipmentDatabase.Controllers;

namespace ITEquipmentDatabase.Tests
{
    [TestFixture]
    public class EquipmentController
    {
        [Test]
        public void TestMethod()
        {
            var equipRepo = new Mock<IEquipmentRepository>();
            var categoryRepo = new Mock<IRepository<EquipmentCategory>>();
            var locationRepo = new Mock<ILocationRepository>();
            var recordRepo = new Mock<IRecordRepository>();

            EquipmentController controller = new EquipmentController(locationRepo.Object, categoryRepo.Object, equipRepo.Object, recordRepo.Object);



        }
    }
}
Error   1   'ITEquipmentDatabase.Tests.EquipmentController' does not contain a constructor that takes 4 arguments   C:\Users\Khandokar\Documents\Visual Studio 2013\Projects\IT Equipment Log\ITEquipmentDatabase.Tests\EquipmentController.cs  27  46  ITEquipmentDatabase.Tests