2017-03-17 25 views
-1

測試類的項目JohnsonTest被測C#測試將不會編譯

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; 

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); 
     } 
    } 
} 

其他類

namespace Requests 
{ 
    public interface IRequest 
    { 
    } 

    public class InitialRequest : IRequest 
    { 
    } 
} 

構建錯誤是:

1> C:\用戶\ bggib_000 \文件\視覺工作室 2017 \項目\約翰遜\約翰遜\ JohnsonRibbon.cs(25,21,25,38):錯誤 CS7036:沒有給出說法,對應於所需 形式參數 「InitialController.InitialController(IRequest,IUsecase)」

這似乎是抱怨「這個」的「用例」,但我以前用'this'測試

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:\用戶\ bggib_000 \文件\視覺工作室 2017 \項目\約翰遜\ JohnsonTest \ ContollerTest.cs(8,41, 8,49):錯誤 CS0535:「InitialContollerTest」不實現接口成員 「IUsecase.Execute()」

這似乎是抱怨的東西,不Ë XIST。

using Requests; 

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

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

Visual Studio Community 2017並未指出任何錯誤。爲什麼不這樣編譯?

+1

問題尋求幫助調試(「爲什麼不是這樣代碼工作?「)必須包括所需的行爲,特定的問題或錯誤以及在問題中重現它所需的最短代碼小精靈。沒有明確問題陳述的問題對其他讀者無益。請給我 –

+1

[MCVE]。 .. –

+0

'InitialController'構造函數需要兩個參數,您提供了一個參數。 – CodeCaster

回答

0

此文件是問題:

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();