2012-01-04 16 views
5

Po przeczytaniu dobrych rzeczy o Moles chciałbym dodać ramy izolacji do naszego zestawu narzędzi do pisania testów jednostkowych.Ramy izolacyjne do testowania dla Mono

Nasza aplikacja działa pod Mono, ponieważ jest wdrażana zarówno na Linuksie, jak i na Windowsie i nie mogę znaleźć architektury obsługującej Mono.

Widziałem kilka artykułów na temat manipulowania złożeniami za pomocą Cecil, ale staram się znaleźć coś, co moglibyśmy realistycznie wykorzystać.

Odpowiedz

4

Wygląda na to, że Moles działa przy użyciu JIT, więc spodziewam się, że będzie bardzo mocno związany z wdrożeniem Microsoftu.

Miałem fantastyczną ilość sukcesów używając Moq na mono, Z bardzo niewielkim nakładem pracy można utworzyć instancję proxy niemal każdej klasy i przechwycić prawie wszystkie wywołania metod. The latest binary version z Moq działa bardzo dobrze na mono dla mnie.

using Moq; 

var mock = new Mock<MyClass> { CallBase = true }; 
mock.Setup(x => x.MyMethod()).Returns (1); 

Po użyciu Moq do konfiguracji rzeczy zazwyczaj wolę używać NUnit, ale można użyć dowolnego innego szkieletu testowego.

+0

Dzięki za twój wkład, Ian. Tak, nawet nie próbowałem patrzeć na Moles z Mono, ponieważ zakładam, że to się nie uda. Już używamy Moq, co moim zdaniem jest fantastyczne, ale szukam narzędzi, które pozwolą mi poradzić sobie z problemami typu DateTime.Now. Jestem w pełni świadomy, że potrafię owijać metody statyczne za metodami instancji w klasach proxy, ale nie jestem pewien, czy jest to najbardziej eleganckie rozwiązanie we wszystkich scenariuszach. – sebjsmith

+0

Och, statyczne przechwytywanie metod. To jest trudne. – IanNorton

+0

Czy przyjrzałeś się używaniu PostSharp do dodawania haczyków przed/po do twoich metod? – IanNorton

0

TypeMock jest najprawdopodobniej jedynym wyborem przy dodawaniu komentarzy do odpowiedzi z @IanNorton.

+1

Nie wierzę, że TypeMock obsługuje Mono. – sebjsmith

+0

Jeśli TypeMock nie działa na Mono, prawdopodobnie nie masz absolutnie żadnego innego wyboru niż klasy proxy. –