Automapper w testach inicjalizuję się podwójnie

0

Gdy odpale pojedyczny test to wszystko dziala jak nalezy, ale gdy odpalam testy dla calej solucji (czy projektu) to wtedy niektore testy rzucaja
Message: System.InvalidOperationException : Mapper already initialized. You must call Initialize once per application domain/process.

oczywiscie rozumiem bład, ale chcialbym rozwiazac go w jakis cywylizowany sposob, a takich pomyslow mi brak

kombinowalem na rozne sposoby

  1. Inicjalizowalem automappera zgodnie z dokumentacja (stworzenie Fixture dla kazdego obiektu)
 public class MapperFixture
    {
        public MapperFixture()
        {
            Mapper.Initialize(cfg =>
            {
                cfg.AddProfile<PackageProfile>();
            });
        }

    }

    public class TestPackageProfile : IClassFixture<MapperFixture>
    {

        public TestPackageProfile(MapperFixture mapperFixture)
        {
        }
  1. stworzenie Shared Fixture (do wszystkich testow uzywalem tego samego fixture)
  2. dodanie flagi wasinitialized i stworzenie MapperInitializer który jest statycznym obiektem i jest wywolywany w normalnie jako funkcja
  3. zgodnie z dokumentacja automappera napisalem cos takiego
public class MapperInitialize
    {
        public void Initialize()
        {
            lock(this)
            {
                Mapper.Reset();
                Mapper.Initialize(cfg =>
                    {
                        cfg.AddProfile<PackageProfile>();
                    });
                    Mapper.Configuration.CompileMappings();
                
            }
            
        }
    }

zadne z 4 sposobow nie dziala, moze cos po drodze skopalem implementujac, ale nie widze zadnego bledu

1

W NUnit mam po prostu takie coś w assembly z testami:

[SetUpFixture]
public class GlobalSetUp
{
   [OneTimeSetUp]
   public void ConfigureAutomapper()
   {
       Mapper.Initialize(configuration =>
       {
           // inicjalizacja
       });
   }
}
0

@fasadin: na temat wątku piszemy w postach, a nie w komentarzach.

Spróbuj może z tym: https://github.com/Fody/ModuleInit

0

Nigdy nie zrozumiem ludzi, którzy potrzebę używania XUnit'a argumentują tym, że jest tam milion assercji, oraz tych zabawnych atrybutów jak theory, fact ;)

public TestPackageProfile(MapperFixture mapperFixture)

Nie, widze, żadnej metody ani klasy statycznej. Nie rozumiem, dlaczego chcesz tutaj wstrzykiwać ten mapper...?

Możesz zrobić np. Singletona i odpalać go w każdym teście, który potrzebuje mappera (wedle uznania...).

1 użytkowników online, w tym zalogowanych: 0, gości: 1