2012-01-04 1 views
5

Moles에 대한 좋은 점을 읽었으므로 단위 테스트 작성 도구 세트에 격리 프레임 워크를 추가하고 싶습니다.Mono 테스트를위한 격리 프레임 워크

우리의 응용 프로그램은 Linux와 Windows 모두에 배포되므로 Mono에서 실행되며 Mono를 지원하는 프레임 워크를 찾을 수 없습니다.

저는 세실 (Cecil)을 사용하여 어셈블리를 조작하는 방법에 대한 기사를 보았지만 현실적으로 사용할 수있는 모든 것을 찾기 위해 고심하고 있습니다.

답변

4

Moles는 JIT를 사용하는 것처럼 보이므로 Microsoft의 구현과 매우 밀접하게 연결될 것으로 기대됩니다.

모노에서 Moq을 사용하여 매우 성공적이었습니다. 거의 모든 노력을 기울여 거의 모든 클래스의 프록시 인스턴스를 생성하고 거의 모든 메소드 호출을 가로채는 것이 가능합니다. Moq의 latest binary version은 나를 위해 모노에서 아주 잘 작동합니다.

using Moq; 

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

일반적으로 NUnit을 사용하는 것을 선호하지만 다른 테스트 프레임 워크를 사용할 수 있습니다.

+0

입력 해 주셔서 감사합니다. 네, Mono와 함께 Moles를 실행하려고 할 때조차도 실패 할 것이라고 생각했습니다. 우리는 이미 환상적이라고 생각하는 Moq을 사용하고 있지만 DateTime.Now 유형 문제에 대처할 수있는 도구를 찾고 있습니다. 프록시 클래스에서 인스턴스 메서드 뒤에 정적 메서드를 래핑 할 수 있다는 것을 완전히 알고 있지만 모든 시나리오에서 가장 훌륭한 솔루션이라고 확신하지는 못합니다. – sebjsmith

+0

오, 정적 메서드 차단 .. 그게 까다 롭습니다 – IanNorton

+0

PostSharp를 사용하여 메서드에 프리/포스트 후크를 추가 했습니까? – IanNorton

0

TypeMock은 @IanNorton의 답에 의견을 추가 할 때 가장 가능성이 높습니다.

+1

TypeMock이 Mono를 지원하지 않는다고 생각합니다. – sebjsmith

+0

TypeMock이 Mono에서 작동하지 않는다면 프록시 클래스 이외의 다른 선택 사항은 없을 것입니다. –