2017-03-17 1 views
-1

Testklasse im Projekt JohnsonTestC# Test nicht kompiliert

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

Klasse unter Test im Projekt Johnson

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

Andere beteiligten Klassen im Projekt Johnson

using Requests; 

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

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

Und

namespace Requests 
{ 
    public interface IRequest 
    { 
    } 

    public class InitialRequest : IRequest 
    { 
    } 
} 

Die Build-Fehler sind:

1> C: \ Benutzer \ bggib_000 \ Dokumente Visual Studio \ 2017 \ Projects \ Johnson \ Johnson \ JohnsonRibbon.cs (25,21,25,38): Fehler CS7036: Es gibt kein Argument, dass formalen Parameter ‚usecase‘ von ‚InitialController.InitialController (IRequest, IUsecase)‘ auf den gewünschten entspricht

Dies scheint über ‚dies‘ zu beschweren, aber meine vorherigen Test mit nur 'dies'

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


    } 
} 

mit dieser Klasse gearbeitet:

public class InitialController : IController 
    { 
     IUsecase usecase; 

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

     public void Execute() 
     { 
      usecase.Execute(); 
     } 
    } 

2> C: \ Users \ bggib_000 \ Dokumente \ Visual Studio 2017 \ Projects \ Johnson \ JohnsonTest \ ContollerTest.cs (8,41, 8,49): Fehler CS0535: 'InitialContollerTest' nicht implementiert Schnittstelle Mitglied 'IUsecase.Execute()'

Dies scheint über etwas zu beschweren, die nicht E nicht 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 zeigt keine Fehler an. Warum wird das nicht kompiliert?

+1

Fragen suchen Debugging-Hilfe ("Warum ist das nicht Code funktioniert? ") muss das gewünschte Verhalten, ein bestimmtes Problem oder einen Fehler und den kürzesten Code enthalten, der notwendig ist, um es in der Frage zu reproduzieren Elf. Fragen ohne eine klare Problemstellung sind für andere Leser nicht nützlich. –

+1

[MCVE] bitte. .. –

+0

Der 'InitialController'-Konstruktor erwartet zwei Argumente, von denen Sie eins angeben. – CodeCaster

Antwort

0

Diese Datei war das Problem:

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

Sobald ich diese Zeile

änderte sich diese
new InitialController(new Usecases.InitialUsecase()).Execute(); 

es

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