NUnit, Could not load file or assembly 'System.Xml, Version=2.0.5.0.'

0

Mam problem z uruchomieniem testów swojego dostępu do danych przez zmockowane repozytorium.
Używam:
Visual Studio 2010 Express
NUnit v.2.6.3
Moq v.4.0.10827.Final

Przy każdej próbie uruchomienia testów wyskakują mi takie błedy jak na screenach poniżej:
Screen1:
user image

Screen2:
user image

Screen3:
user image

Wszystkie dołączone do solucji projekty mam w Framework v4.0, oraz wszystkie dll z System.Xml dołączone do projektów również w v.4.0 jak poniżej.
user image
user image

Sama klasa testów wygląda tak:

    [TestFixture]
    public class PracownikRepositoryTest
    {
        private Mock<IDanePodstawoweDataContext> mockPracownikDataContext;
        private IDanePodstawoweDataContextWrapper stubdataContextWrapper;
        private IPracownikRepository pracownikRep;
 
        [SetUp]
        public void Setup()
        {
            mockPracownikDataContext = new Mock<IDanePodstawoweDataContext>();
            stubdataContextWrapper = new StubDanePodstawoweDataContextWrapper(mockPracownikDataContext.Object);
            pracownikRep = new PracownikRepository(stubdataContextWrapper);
 
            #region Tworzenie pojedynczych pracowników p1, p2, p3, p4, p5
            Pracownik p1 = new Pracownik 
            {
                idPracownika = 5, Imie1 = "Admin", Nazwisko = "Adminowicz", Login = "Admin Adminowicz", mailFirmowy = "[email protected]", 
                telFirmowy1 = "123456789", idPrzelozonego = 113, idDzialu = 4,  idStanowiska = 1, DataZatrudnienia = new DateTime(2014,05,19), 
                idPlci = 1
            };
            //analogicznie jak powyżej tworzę pozostałych 4 pracowników
            #endregion
 
            List<Pracownik> pracownicy = new List<Pracownik> { p1, p2, p3, p4, p5 };
            mockPracownikDataContext.Setup(x => x.Pracownicy()).Returns(new StubPracownikTable(pracownicy));
        }
 
        [Test]
        public void AddTest()
        {
            Assert.AreEqual(5, pracownikRep.Count());
 
            Pracownik nowy = new Pracownik
            {
                idPracownika = 1, Imie1 = "Nowy", Nazwisko = "Nowiński", Login = "Nowy Nowiński", mailFirmowy = "[email protected]", 
                telFirmowy1 = "506000666", idPrzelozonego = 113, idDzialu = 4, idStanowiska = 1, 
                DataZatrudnienia = new DateTime(2014, 06, 26),  idPlci = 1
            };
 
            pracownikRep.Add(nowy);
 
            Assert.AreEqual(6, pracownikRep.Count());
        }
    }
 

Sam sposób mockowania repositoriow robiłem na postawie tego wpisu:
http://myadventuresincoding.wordpress.com/2013/01/21/linq-to-sql-unit-testing-a-repository/

I teraz pytania:
1) Gdzie popełniam błąd? Jeżeli przestawiłem wszystkie projekty na Framework v2.0 to po pierwsze cały projekt się nie kompiluje przez brak m.in.Linq (dostęp do danych mam przez linq to object) a po drugie testy nie mogły i tak się uruchomić (z powodu braku skompilowania pod v.2.0). Jeżeli przestawię tylko projekt NUnitTests na v.2.0 to generalnie czepia się do większości bibliotek w NUnitTest References ze są w wyższych wersjach.
2) Co oznaczają na Screenie 3, te odwołania do lokalizacji "D:\code\moq\src\Source....." nie mam takiego folderu na dysku, a samą bibliotekę Moq.dll dodałem przez referencję do projektu z lokalizacji innej(folderu z innymi zewnętrznymi bibliotekami z jakich w nim korzystam).
3) Czy to może to znaczy ze te narzędzia NUnit i Moq są niekompatybilne z .Net 4.0?

Będę wdzięczny za podpowiedzi.

1

Masz Framework 2.0 w ogóle zainstalowany?

  1. Obstawiam, że masz gdzieś dodaną referencję do System.Xml w wersji 2.0.5.0. Rozwiń wszystkie referencje w swojej solucji i sprawdź.
  2. To są ścieżki, w których znajdowały się źródła Moq przed kompilacją.
  3. Nie, są kompatybilne jak najbardziej.
0

Ad.1) Sprawdzałem, i w każdym z 5 projektów które mam w solucji, w referencjach jest System.Xml v4.0, tak jak w poprzednim poście na screenie gdzie wyświetlone są właściwości System.Xml z projektu NUnitTests

Co do zainstalowania Frameworka 2.0 sam celowo wcześniej nie instalowałem tylko tyle co załatwiła instalacja samego VisualStudio 2010. Wydawało mi się że jak mam Framework 4 to tym samym poprzednie wersje też.

Zainstalowane składniki wyglądają u mnie tak:
user image

Dla wszystkiego próbowałem ściągnąć i zainstalować jeszcze v.2.0 ale nie mogę:
user image

0

Problem rozwiązany:

Namieszałem z dodanymi referencjami do Moq.dll i Castle.Core.dll:
Miałem dodane Moq.dll z folderu "\NET40-RequiresCastle" i Castle.Core.dll z folderu "Silverlight4" i to się gryzło.
Dopiero jak usunąłem referencję z Castle.Core.dll a Moq pobrałem z folderu "\NET40" (zawierający Castle już w sobie) problem z zaginionym System.Xml v2 minął.
user image

1
Varran napisał(a):

Wydawało mi się że jak mam Framework 4 to tym samym poprzednie wersje też.

Framework 4.0 jest niekompatybilny z linią 2.0 - 3.5. Jeśli aplikacja wymaga np. 2.0 lub 3.5, to posiadanie 4.0 nic Ci nie daje.

Varran napisał(a):

Namieszałem z dodanymi referencjami do Moq.dll i Castle.Core.dll

Używasz NuGeta?

0

Bardzo bym chciał używać NuGet'a - podobno on panuje nad tymi wszystkimi powiazanymi dll'kami - ale w Visual Studio 2010 **Express **nie ma go w Extension Manager, jak szukałem informacji w necie to trafiłem na obejście tego problemu z użyciem VWD Express :
http://stackoverflow.com/questions/4566908/how-can-i-use-nuget-with-visual-c-sharp-express

i faktycznie w VWD W Extension Manager już był NuGet niby się zainstalował bez problemu ale nigdzie nie mogę znaleźć teraz opcji "Add Library Package Reference..." tak jak opisują to tutaj:
http://msdn.microsoft.com/pl-pl/library/nuget--system-dystrybucji-bibliotek.aspx

chyba że masz jakąś rade co i jak to zainstalować? Bo może znów coś przeoczyłem.

0

Na stronie msdn, ktora podales jest tez opisane jak instalowac pakiety z konsoli - probowales w ten sposob?

0

@Varran, ja w wersjach 2010 Express używałem NuGeta, więc musi się dać. Masz SP1 zainstalowany?

0

właśnie zainstalowałem SP1 i od razu przeszedlem do Extension Manager'a a tam tylko NuGet Packager nie ma NuGet Manager'a.

Co jeszcze sprawdzić? Jakie dodatki? Jaką kolejność instalowania VS Express w stosunku do SQL Express?

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