단위테스트 라이브러리를 갈아타다... CSharp

그동안 정말 잘 사용했던 MbUnit 2.4 버전을 내려놓고, NUnit 2.5.10을 사용하기 시작했습니다.
뭐 기존에도 두 개를 쓰는 것에는 큰 문제가 없었지만, 초중급자에게는 MbUnit이 유리한 것은 사실입니다.

MbUnit이 NUnit보다 장점이라면...

1. 참조한 Assembly들이 다른 버전의 Assembly들을 참조한다하더라도 불평없이 실행시켜줍니다.
2. ThreadedRepeat Attribute 가 있어, 멀티 스레드 환경에서 테스트 하는 것이 정말 쉽습니다.
3. 테스트 결과를 xml, html 로 생성해주어, 로그를 잘 썼다면, 자세히 관찰하면서, 예외도 잘 찾을 수 있고, 좋습니다.
4. 테스트 진행상황은 VS.NET의 console에 따로 Summary 해줍니다.

뭐 여기까지만 하겠습니다...

햐... 근데 왜 NUnit을 바꾸시나요? xUnit도 있는데... Galio를 쓰면 MbUnit 3과 같이 써서 기존 코드를 변경할 필요도 없을텐데요...

네... 이것저것 다 해봤습니다... VS.NET 2010과 가장 잘 맞는 것은 NUnit이란 결론을 얻었습니다.

1. MbUnit 2.4 버전은 너무 오래되었다.
2. Galio + MbUnit 3 는 기능은 막강해졌고, 리포트도 화려해졌지만, 정작 많은 로그가 쌓은 결과 리포트를 보려면 엄청난 인내를 가져야 한다. IE는 절대 불가, 크롬도 메롱하는 경우가 많습니다.
3. xUnit 은... 너무 앞서나간 것 같아요... 저한테는...

그럼 NUnit 을 채택한 이유는 

1. NUnit은 사용자가 가장 많습니다.
2. NUnit은 단위테스트 환경과 운영 환경이 같을 정도로 엄격히 설정해줘야 합니다. (이렇게 설정하는게 어렵지만, 테스트환경과 운영환경이 같게 하고 테스트한다는 것은 두번 일을 하지 않는 것입니다)
3. NUnit의 결과가 Console로 나오는 데, VS.NET 2010은 Dual Monitor로 출력창을 따로 빼면 좋습니다. (물론 엄청난 결과에 대해서 처리가 힘들기도 합니다)
4. 테스트 함수 개개의 실행 순서가 알파벳순입니다. (MbUnit은 함수 정의 순서대로입니다.)
   ==> MbUnit에 익숙해서, 시나리오를 Class 의 함수 순서대로 하는 경우가 가끔 있었습니다.
   ==> NUnit에서는 이 순서가 다 틀어져버리므로, 예외가 발생합니다.
   ==> 결론적으로 하나의 테스트가 다른 테스트와 관계를 갖는 것은 좋은 테스트 시나리오가 아닙니다. 그러므로  NUnit 방식이 더 옳바른 방식이라 할 수 있습니다.

5. 이제 회사의 거의 모든 개발자들이 단위테스트를 할 수 있습니다.
   ==> 초보딱지는 다들 뗐으니 NUnit을 사용해도 되겠지요^^


개인적으로는 뭘 쓰던 상관없는데, 단위테스트라는 게 결국 팀 프로젝트 시에 더 필수적인 요소가 되는터라, 여러 사람이 사용할 수 있어야 하고, 테스트 코드를 작성할 수 있어야 하는데... 
초창기부터 NUnit으로 했다면, 아마 포기하는 사람들이 생겼을 겁니다. ㅋㅋ

참 또 하나 SharpTestsEx 는 단위테스트 라이브러리에 Assertion을 쉽게 할 수 있도록 해주는 라이브러리입니다.

이 것도 사용해보시면 좋을 겁니다.