[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 { // 다른 수많은 비슷한 테스트 메서드들... [