Pergunta

Eu estou usando o Castelo de Windsor para injeção de dependência no meu projeto de teste. Eu estou tentando criar uma uma instância de minhas aulas 'repositório'. "Ele funciona bem na minha máquina", mas quando eu executar uma compilação noturno no TFS, meus testes não são capazes de carga disse classes.

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


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

    }

xml de configuração:

<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 eu fila uma nova compilação produz a seguinte mensagem:

Não é possível criar instância da classe Example2008.Test.ActiveProductRepositoryTest. Erro: System.Configuration.ConfigurationException: O nome do tipo Example2008.Repository.LALALALALA, Example2008.Repository não poderia ser localizado.

Castle.Windsor.Installer.DefaultComponentInstaller.ObtainType (String Digite o nome) Castle.Windsor.Installer.DefaultComponentInstaller.SetUpComponents (IConfiguration [] configurações, IWindsorContainer recipiente) Castle.Windsor.Installer.DefaultComponentInstaller.SetUp (IWindsorContainer recipiente, armazenar IConfigurationStore) Castle.Windsor.WindsorContainer.RunInstaller () Castle.Windsor.WindsorContainer..ctor (IConfigurationInterpreter intérprete) Example2008.Test.ActiveProductRepositoryTest..cctor () em d: \ Code_Temp \ Exemplo Projecto Nightly \ Sources \ Example2008.Test \ ProductRepositoryTest.cs: linha 19

A partir desta mensagem, parece que minha configuração está correta (ele pode ver que eu quero instanciar a classe concreta 'LALALALALA', então a configuração XML, obviamente, foi vermelho corretamente)

Eu acho que tenho minhas dependências configurado corretamente, bem como (porque ele funciona localmente, mesmo se eu limpar a solução e reconstruir).

Qualquer pensamento?

(usando VS2008, TFS 2008.Net 3,5, 1,03 Castelo, pela maneira)

Foi útil?

Solução

Isso é ... interessante. Eu encontrei este post que pode ajudar o seu problema. Parece que MSTest está usando isso como seu diretório de trabalho, o que é irritante para dizer o mínimo. Os post mostra de blog como alterar o diretório, de modo que você pode ter resultados consistentes. Também gostaria de fazer algumas pesquisas no Google para descobrir se existe uma solução mais elegante.

Outras dicas

Parece que a montagem que contém as implementações de repositório está faltando no diretório bin (ou onde quer que seu diretório de execução não for para a compilação).

Gostaria em primeiro lugar verificar se a montagem existe no diretório de execução do servidor de compilação.

Se ela existe, então eu verifique se a versão do conjunto é o caminho certo, ou seja, tem a implementação repositório on-lo no mesmo namespace etc.

Pode ser que o seu servidor de compilação está executando / construção dos objetos em outro lugar de onde VS está executando / construção.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top