라벨이 NUnit인 게시물 표시

JetBrains Rider 2023.2.3에서 NUnit 4 지원 안 됨

JetBrains Rider 2023.2.3에서 NUnit 4 지원 안 됨 NUnit 4 2023년 11월 26일에 NUnit 4.0.0이 릴리즈되고 바로 이틀 전인 12월 2일에 4.0.1이 릴리즈되었다. 링크 문제는, 꽤 오랫동안 진행한 이전 프로젝트에서 xUnit을 써왔기에 이러한 사실을 전혀 모르고 있었다는 것이다. 최신 버전과 서드파티 IDE의 문제 문제는 이런 변경 사항에 대해 아무것도 모른 채 기존 .NET Framework 프로젝트를 .NET 7으로 마이그레이션하다가 테스트 프로젝트가 작동하지 않는 상황에 직면하게 되었다는 것이다. 분명 코드도 정상이고, IDE도 정상이고, NuGet 패키지도 잘 설치되었으며 dotnet test 로 테스트를 실행하면 잘 되는데 JetBrains Rider의 Unit Tests Explorer에서 테스트를 감지하지 못하는 것이었다. Visual Studio에서는? 이럴 때 뭘 해야 할까 생각해보다가 일단 Visual Studio에서 돌려보기로 했다. 왜냐하면 dotnet test 는 잘 돌아갔으므로 Visual Studio에서도 되지 않겠냐는 생각이 들었기 때문이다. 또, Visual Studio가 켜지고 ReSharper를 로드하는 모습을 보니 Visual Studio의 자체 단위 테스트 기능과 ReSharper를 비교해보면 더 확실히 할 수 있지 않을까 하는 생각이 들었다. 이 때까진 몰랐지. 이게 함정이 될 줄은. 아무튼 Visual Studio가 로드되고 프로젝트를 연 뒤, 우선은 ReSharper의 단위 테스트 기능을 먼저 실행하려 시도해봤다. 예상대로 작동하지 않는다. 증상 역시 똑같았다. 아예 단위 테스트 세션 자체가 생기질 않는다. 왜? 감지된 단위 테스트가 없으니까. 그래서 이제 Visual Studio의 자체 단위 테스트 윈도우를 열어봤더니, 아니나 다를까 정상적으로 로드되고 단위 테스트도 문제 없이 진행되는 것이 아닌가? 성급했던 결론 ...

[C#/NUnit] NUnit 테스트 전후 처리, SetUpAttribute & TearDownAttribute

반복되는 마무리 처리 오늘, 단위 테스트를 진행하다가 난감한 상황을 맞닥뜨렸습니다. 단위 테스트 대상 메서드는 ADB를 통해 특정 작업을 시행한 뒤 Redirect된 출력을 바탕으로 내용을 분석해 원하는 결과가 나왔는지 체크하는 메서드였는데요. 문제는, ADB 프로세스를 처음 실행할 때, 데몬 모드로 프로세스가 꺼지지 않게 계속 실행된다는 것 입니다. 이 문제를 해결하기 위해서, 여러 시도를 했습니다. 우선, 매 adb 명령이 완료될 때마다 프로세스 리스트에서 adb를 모두 종료하는 방식이 첫번째였죠. 하지만, 이 경우에 ADB 작업이 실행될 때마다 데몬이 켜지길 반복 하기 때문에, 심각할 정도의 CPU 자원 낭비 , 즉 딜레이 가 생겼습니다. 그래서, ADB 관련 처리를 하는 클래스에 IDisposable 을 구현한 뒤, Dispose() 메서드에서 전체 adb 프로세스를 죽이는 작업을 처리하도록 했습니다. 이러면 아래와 같이 사용할 수 있죠. using ( var manager = new AdbManager()) { // TODO: Process... } 실사용에선 별 문제가 없어 보입니다. 그렇지만, 고작 단위 테스트 하나를 위해서 저렇게 해야될까요? 당연히 아닙니다. 제가 사용하는 NUnit 테스트 프레임워크엔 이럴 경우를 위한 어트리뷰트가 마련돼 있습니다. 물론, 다른 프레임워크도 비슷한 기능이 있으나, 이번에 제가 포스팅할 것은 제가 사용하는 NUnit에 대해서입니다. SetUpAttribute, TearDownAttribute 바로 SetUpAttribute 와 TearDownAttribute 입니다. 각각 단위 테스트를 시작하기 전, 그리고 단위 테스트를 마친 후 시행될 작업을 정의할 메서드에 붙여주시면 됩니다. 지금 제 상황에 맞게 코딩해볼까요? [TestFixture] public class AdbManagerTests { // 다른 수많은 비슷한 테스트 메서드들... [...