본문 바로가기

Programing/테스트

assertThat (org.fest.assertions vs org.hamcrest) fest는 Fixtures for Easy Software Testing의 약자로 쉬운 소프트웨어 테스트를 위한 픽스쳐들이라는 의미이다.hamcrest랑 짧게 비교를 해보았다.예) 결과가 null인지 assert hamcrest-Assertimport static org.hamcrest.MatcherAssert.assertThat;import static org.hamcrest.Matchers.nullValue;import stat..
[Spring] 테스트 코드에서 private 필드 처리 면접을 보러 갔다가 까칠하게 생긴 면접관한테 이런 질문을 받은 적이 있다.클래스에 private 필드가 있는데 테스트를 어떻게 수행하겠느냐?당시 자바에 대한 공부를 하고 갔기에 리플렉션에 대해서 알고 있어서 리플렉션을 이용하면 private 필드도 접근이 가능하다고 알고 있어서 그렇게 대답을 하였다.어제 테스트 코드를 작성하다가 private 필드를 조작할 필요가 있었다. 처음에는 리플렉션을 생각했는데 코드가 길어지고 리플렉션 사용법도 찾아봐야 해서..
단위테스트가 아닌 것들, 팁 레거시코드 활용 전략p.43단위테스트는 빠르게 실행된다. 빠른 속도로 실행되지 않는 단위테스트는 단위테스트가 아니다.다음과 같은 일을 한다면 그것은 단위테스트가 아닐 것이다.1. 해당 테스트가 데이터베이스와 통신한다.2. 네트워크를 통해 통신한다.3. 파일시스템을 건드린다.4. 실행하기 위해 구성 파일 편집처럼 환경을 바꾸는 작업(.cfg나 .ini 파일 등의 수정)을 해야 한다.이런 일을 하는 테스트가 나쁜 것은 아니지만 이와 같은 코드를 작성하기..
TDD 디자인 패턴(design pattern) JUnit in ActionPetar Tahchiev, Felipe Leme, Vincent Massol, Gary Gregory, 2010JUNIT IN ACTION: 단위 테스트의 모든 것(인사이트, 이복연 옮김. 2011)퍼사드(facade) p.27제어 구조 역전 p.36싱글톤(singleton) p.98제어 역전(Inversion of Control, IoC) p.140
TDD 모범사례(best practice) '베스트 프렉티스'를 모범사례로 번역을 한 것은 참고문헌 MAS10 p.xx/p.2를 따른 것이다."한 번에 하나의 객체만 테스트하라." - MAS10 p.43"assert 호출 시에는 실패 원인을 기술하라." - MAS10 p.47"하나의 @Test 메서드에서는 하나의 테스트만 수행하라." - MAS10 p.50"실패할 가능성이 잇는 모든 것을 테스트하라." - MAS10 p.53"테스트를 통해 코드를 개선하라." - MAS10 ..
[NUnit] 사례TDD - 완벽하지 않은 테스트 확장메서드를 이용해서 byte 배열을 Int32로 변환하는 정적메서드를 만들었다.모양은 아래와 같았다. (빅엔디안이라서 Reverse로 순서를 바꾸어주었다.)        public static Int32 FromBytes(this byte[] value)        {            byte[] t = ne..
[NUnit] 닷넷 환경의 테스트 주도 개발 Visual Studio 2008 환경을 사용하고 있다.닷넷에는 [테스트] 메뉴가 존재하지만 써 보았는데 JUnit+이클립스 같이 깔끔하게 돌아가는 환경은 아니다.테스트를 할 때마다 생기는 로그 파일이 뭔가 부담스럽다.그래서 NUnit이라는 오픈소스프로젝트를 사용하는데 많이 이용하는 것 같다.NUnit은 아래와 같은 GUI Runner를 제공한다.하지만 이클립스 처럼 IDE 환경 내에서 바로 돌아가지 않아서 Visual Studio 따로 NUnit ..
[NUnit] NUnit에서 x86 바이너리 테스트하기 NUnit은 .net 프레임워크를 위한 테스트 프레임워크이다.처음에는 AnyCPU로 선택해서 OS가 64비트라서 64비트로 동작하는 모듈을 테스트하는데,System.BadImageFormatException이 발생을 한다. 서드파티 라이브러리가 32비트용 dll이라서 그런 것 같았다.제조사에게 64비트용 이미지를 요청하고, 시간이 없어서 개발은 32비트로 먼저 진행하기로 했다.그런데 이번에는 NUnit에서 아래와 같이 읽어오질 못한다.알고보니 x86..