C#测试不会编译

C#测试不会编译,c#,compiler-errors,C#,Compiler Errors,约翰逊测试项目中的测试类 using Microsoft.VisualStudio.TestTools.UnitTesting; using Usecases; using Requests; namespace Controllers { [TestClass] public class InitialContollerTest : IUsecase { private bool executeMethodCalled = false;

约翰逊测试项目中的测试类

using Microsoft.VisualStudio.TestTools.UnitTesting;
using Usecases;
using Requests;

namespace Controllers
{
    [TestClass]
    public class InitialContollerTest : IUsecase
    {
        private bool executeMethodCalled = false;

        public void Execute(IRequest request)
        {
            executeMethodCalled = true;
        }

        [TestMethod]
        public void ShouldCallInitialUsecase()
        {
            IRequest request = new InitialRequest();
            InitialController controller = new InitialController(request, this);
            controller.Execute();
            Assert.IsTrue(executeMethodCalled);
        }
    }
}
约翰逊项目中正在测试的类

using Requests;
using Usecases;

namespace Controllers
{
    interface IController
    {
        void Execute();
    }

    public class InitialController : IController
    {
        private IUsecase usecase;
        private IRequest request;

        public InitialController(IRequest request, IUsecase usecase)
        {
            this.request = request;
            this.usecase = usecase;
        }

        public void Execute()
        {
            usecase.Execute(request);
        }
    }
}
using Requests;

namespace Usecases
{
    public interface IUsecase
    {
        void Execute(IRequest request);
    }

    public class InitialUsecase : IUsecase
    {
        public void Execute(IRequest request)
        {
            ;
        }
    }
}
约翰逊计划涉及的其他课程

using Requests;
using Usecases;

namespace Controllers
{
    interface IController
    {
        void Execute();
    }

    public class InitialController : IController
    {
        private IUsecase usecase;
        private IRequest request;

        public InitialController(IRequest request, IUsecase usecase)
        {
            this.request = request;
            this.usecase = usecase;
        }

        public void Execute()
        {
            usecase.Execute(request);
        }
    }
}
using Requests;

namespace Usecases
{
    public interface IUsecase
    {
        void Execute(IRequest request);
    }

    public class InitialUsecase : IUsecase
    {
        public void Execute(IRequest request)
        {
            ;
        }
    }
}

生成错误包括:

1> C:\Users\bggib\u 000\documents\visualstudio 2017\Projects\Johnson\Johnson\JohnsonRibbon.cs(25,21,25,38):错误 CS7036:没有与所需参数相对应的参数 的形式参数“usecase” 'InitialController.InitialController(IRequest,IUsecase)'

这似乎是在抱怨“这个”,但我之前的测试只是“这个”

using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Usecases;

namespace Controllers
{
    [TestClass]
    public class InitialContollerTest : IUsecase
    {
        private bool executeMethodCalled = false;

        void IUsecase.Execute()
        {
            executeMethodCalled = true;
        }

        [TestMethod]
        public void ShouldCallInitialUsecase()
        {
            InitialController controller = new InitialController(this);
            controller.Execute();
            Assert.IsTrue(executeMethodCalled);
        }


    }
}
与本课程合作:

public class InitialController : IController
    {
        IUsecase usecase;

        public InitialController(IUsecase usecase)
        {
            this.usecase = usecase;
        }

        public void Execute()
        {
            usecase.Execute();
        }
    }
2> C:\Users\bggib\u 000\documents\visualstudio 2017\Projects\Johnson\Johnson test\ContollerTest.cs(8,41,8,49):错误 CS0535:“InitialControllerTest”未实现接口成员 'IUsecase.Execute()'

这似乎是在抱怨一些不存在的东西

using Requests;

namespace Usecases
{
    public interface IUsecase
    {
        void Execute(IRequest request);
    }

    public class InitialUsecase : IUsecase
    {
        public void Execute(IRequest request)
        {
            ;
        }
    }
}

Visual Studio Community 2017未显示任何错误。为什么不编译此文件?

此文件就是问题所在:

using Microsoft.Office.Tools.Ribbon;
using Excel = Microsoft.Office.Interop.Excel;
using Controllers;

namespace Johnson
{
    public partial class JohnsonRibbon
    {
        private void JohnsonRibbon_Load(object sender, RibbonUIEventArgs e)
        {

        }

        private void OnInitalButtonClick(object sender, RibbonControlEventArgs e)
        {
            string Prompt = "Select two data columns (X, Freq) for analysis";
            string Title = "Select Histogram";
            var range = Globals.ThisAddIn.Application.InputBox(Prompt: Prompt, Title: Title, Type: 8);
            if (range is Excel.Range)
            {
                new InitialController(new Usecases.InitialUsecase()).Execute();
            }
        }
    }
}
有一次我换了这行

new InitialController(new Usecases.InitialUsecase()).Execute();
对此,它起了作用

new InitialController(new Requests.InitialRequest(), new Usecases.InitialUsecase()).Execute();

寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请
InitialController
构造函数需要两个参数,您提供一个。@rory.ap好的。今天我学到了一些新东西;)@CodeCaster在当前测试中我传递了两个参数InitialController=newinitialcontroller(请求,this);