Frage

Ich verwende Schloss Windsor für Dependency Injection in meinem Testprojekt. Ich versuche, eine Instanz eines meiner ‚Repository‘ Klassen zu erstellen. „Es funktioniert auf meinem Rechner“, aber wenn ich ein Nightly Build in TFS laufen, meine Tests sind nicht in der Lage die Klassen zu laden.

private static readonly WindsorContainer _container = new WindsorContainer(new XmlInterpreter());


    public void MyTestInitialize()
    {
        var testRepository = (IBogusRepository)_container[typeof(IBogusRepository)];

    }

XML-Konfiguration:

<castle>
    <components>
      <component id="primaryBogusRepository" type="Example2008.Repository.LALALALALA, Example2008.Repository" service="Example2008.Domain.Repository.IBogusRepository, Example2008.Domain" />
      <component id="primaryProductRepository" type="Example2008.Repository.ProductRepository, Example2008.Repository" service="Example2008.Domain.Repository.IProductRepository, Example2008.Domain" />
    </components>
  </castle>

Wenn ich eine neue Build-Warteschlange es produziert die folgende Meldung:

  

Kann nicht Instanz der Klasse erstellen   Example2008.Test.ActiveProductRepositoryTest. Error:   System.Configuration.ConfigurationException:   Der Typname   Example2008.Repository.LALALALALA,   Example2008.Repository konnte nicht sein   befindet.

     

Castle.Windsor.Installer.DefaultComponentInstaller.ObtainType (String   Modellname)   Castle.Windsor.Installer.DefaultComponentInstaller.SetUpComponents (IConfiguration []   Konfigurationen, IWindsorContainer   Container)   Castle.Windsor.Installer.DefaultComponentInstaller.SetUp (IWindsorContainer   Behälter, IConfigurationStore store)   Castle.Windsor.WindsorContainer.RunInstaller ()   Castle.Windsor.WindsorContainer..ctor (IConfigurationInterpreter   Dolmetscher)   Example2008.Test.ActiveProductRepositoryTest..cctor ()   in d: \ Code_Temp \ Beispiel Projekt   Nightly \ Sources \ Example2008.Test \ ProductRepositoryTest.cs:   Zeile 19

Von dieser Nachricht scheint es, dass meine Konfiguration korrekt ist (es kann sehen, dass ich die konkrete Klasse ‚lalalalala‘ instanziiert will, so dass die XML-Konfiguration hat offensichtlich rot gewesen richtig)

Ich glaube, ich habe meine Abhängigkeiten korrekt als gut eingerichtet (weil es vor Ort funktioniert, auch wenn ich die Lösung reinigen und neu erstellen).

Alle Gedanken?

(mit VS2008, TFS 2008.Net 3.5, Schloss 1,03, übrigens)

War es hilfreich?

Lösung

Das ist ... interessant. Ich fand diesem Blog-Post das kann Ihr Problem helfen. Es sieht aus wie MSTest verwendet, die als Arbeitsverzeichnis, die gelinde gesagt ärgerlich. Der Blog-Eintrag zeigt, wie das Verzeichnis zu ändern, so dass Sie konsistente Ergebnisse haben können. Ich würde einige Googeln auch tun, um herauszufinden, ob eine elegantere Lösung besteht.

Andere Tipps

Es klingt wie die Anordnung, die die Repository-Implementierungen fehlen aus dem bin-Verzeichnis (oder wo auch immer Ihre Ausführung Verzeichnis ist für den Build) hält.

Ich würde zuerst prüfen, ob die Anordnung in der Ausführung Verzeichnis Build-Servers vorhanden ist.

Wenn es nicht vorhanden ist, dann würde ich überprüft die Version der Assembly, um sicherzustellen, ist der richtige, das heißt hat die Repository-Implementierung auf sie im gleichen Namensraum etc.

Es kann sein, dass Ihr Build-Server ausgeführt wird / Bau der Objekte irgendwo anders als in dem VS ausführt / Gebäude.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top