Domanda

Sto usando il Castello di Windsor per l'iniezione di dipendenza nel mio progetto di test.Sto cercando di creare un'istanza di uno dei miei 'Repository' classi."Funziona bene sulla mia macchina", ma quando ho eseguito una nightly build in TFS, i miei test non sono in grado di caricare detto classi.

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


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

    }

xml di configurazione:

<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>

Quando ho la coda di una nuova build produce il seguente messaggio:

Impossibile creare l'istanza della classe Example2008.Test.ActiveProductRepositoryTest.Errore:Sistema.Di configurazione.ConfigurationException:Il nome del tipo Example2008.Repository.LALALALALA, Example2008.Repository potrebbe non essere situato.

Castello.Windsor.Programma di installazione.DefaultComponentInstaller.ObtainType(String typeName) Castello.Windsor.Programma di installazione.DefaultComponentInstaller.SetUpComponents(IConfiguration[] configurazioni, IWindsorContainer contenitore) Castello.Windsor.Programma di installazione.DefaultComponentInstaller.SetUp(IWindsorContainer contenitore, IConfigurationStore store) Castello.Windsor.WindsorContainer.RunInstaller() Castello.Windsor.WindsorContainer..ctor(IConfigurationInterpreter interprete) Example2008.Test.ActiveProductRepositoryTest..cctor() in d:\Code_Temp\Example Progetto Di Notte\Sources\Example2008.Test\ProductRepositoryTest.cs:linea 19

Da questo messaggio, sembra che la mia configurazione è corretta, si può vedere che voglio creare un'istanza della classe di calcestruzzo 'LALALALALA', così l'xml di configurazione è stata ovviamente rosso correttamente)

Penso di avere le mie dipendenze impostata correttamente (perché funziona in locale, anche se ho pulito la soluzione e ricostruire).

Ogni pensiero?

(utilizzo di VS2008, TFS 2008.Net 3.5, Castello 1.03, by the way)

È stato utile?

Soluzione

Che è...interessante.Ho trovato questo post del blog che può aiutare il vostro problema. Sembra che MSTest che come directory di lavoro, che è fastidioso, per non dire altro.Il post sul blog mostra come cambiare la directory, in modo che si può avere risultati consistenti.Vorrei anche fare qualche ricerca con Google per scoprire se una soluzione più elegante esiste.

Altri suggerimenti

Sembra che il gruppo che detiene il repository implementazioni manca la directory bin (o dovunque in esecuzione di directory per la compilazione).

Vorrei in primo luogo controllare per vedere se l'assemblea esiste nel server di generazione in esecuzione directory.

Se non esiste, allora vorrei controllare per assicurarsi che la versione dell'assemblea è quello giusto, cioèè il repository di attuazione su di esso nello stesso spazio dei nomi etc.

Può essere che la tua build server è in esecuzione/creazione di oggetti da qualche altra parte rispetto a dove VS è in esecuzione/edificio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top