본문 바로가기
[android] CONNECTIVITY_ACTION deprecated 에 대한 이야기 - Connectivity 가 변경되었을 때 받을 수 있는 broadcast 는 ConnectivityManager.CONNECTIVITY_ACTION 가 있었다. 그러나 이 녀석은 API 28 (POS) 부터 deprecated 되었다. - 사실 이 녀석은 이미 deprecated 의 징조를 띄고 있었다. targetSdk 24 (NOS) 부터 static receiver 로 받을 수 없게 되었고, targetSdk 26 (OOS) 부터는 background restriction 정책으로 이 녀석을 포함한 다른 녀석들도 static receiver 로 받을 수 없게 되었다. 그리고 결국 API 28 (POS) 부터는 deprecated 된 것이다. deprecated 가 되었기 때문에 사실 target.. 2019. 4. 9.
[Effective Unit Testing] Appendix B. JUnit 확장하기 [Effective Unit Testing] Appendix B. JUnit 확장하기 -JUnit 4.0 버전에 와서야 junit.framework.TestCase 로부터 벗어나게 되었다.그전까지는 모든 테스트가 TestCase 클래스를 상속해야 했기 때문에 이렇게 상속받은 동작 일부를 오버라이딩하는 것 말고는 JUnit 의 기능을 확장할 방법이 없었다.하지만, annotation 을 적극 수용한 버전에서는 훨씬 자유롭고 유연한 annotation 을 이용해 JUnit 을 확장할 수 있도록 바뀌었다. -JUnit 의 기본 동작을 확장하려면 Runner 와 Rule 의 핵심 개념을 활용해야 한다. B.1. Runner 를 통해 테스트 동작 제어하기 -@RunWtih annotation 을 따로 명시하지 않.. 2019. 3. 29.
[Effective Unit Testing] Appendix A. JUnit 기초 [Effective Unit Testing] Appendix A. JUnit 기초 -JUnit 을 이해하려면 두 가지를 꼭 알고 있어야 한다.첫째는 JUnit 테스트의 구조와 생명주기다.두번째는 단언 API 다. A-1. 기본적인 JUnit 테스트 케이스 A.1.1. 테스트 메서드 선언하기 -JUnit 은 public 이 아닌 메서드는 다 무시한다.입력 인자를 받는 메서드도 모두 무시한다.반환형이 void 가 아니어도 역시 무시한다.static method 도 무시 대상이다.@Test annotation 이 없으면 당연히 무시한다.즉, 테스트 메서드는 public void 이면서 입력 인자를 받지 않는 @Test annotate 된 것이다. A.1.2. JUnit 테스트의 생명주기 -JUnit 은 다음의.. 2019. 3. 20.
[Effective Unit Testing] Chap9. 테스트 속도 개선 [Effective Unit Testing] Chap9. 테스트 속도 개선 -좋은 단위 테스트는 수행 시간도 짧다.그러나 테스트 스위트의 덩치가 커질수록 피드백 주기가 길어지는 건 피할 수 없다. -테스트 속도 개선과 빌드 속도 개선 두 가지 측면을 볼 수 있다.테스트 속도 개선은 테스트를 빠르게 해줄 실마리를 찾기 위해 코드를 파해치는 작업이다.빌드 속도 개선과 관련해서는, 빌드 스크립트가 테스트를 실행하는 방식을 봐야 한다. 구체적으로는 고성능 컴퓨터나 다수 컴퓨터를 이용한 병렬 실행을 통해 빌드 시간 단축을 볼 수 있다. 9.1. 속도 개선을 위해서 9.1.1. 더 빠르게! -테스트가 빨리 끝나야 하는 이유는 피드백이 늦어질수록 피해가 더 커지기 때문이다.좁게 보면 개발자는 작업을 마무리하지 못하고.. 2019. 3. 19.
[Effective Unit Testing] Chap8. 제 2의 JVM 언어를 활용한 테스트 작성 [Effective Unit Testing] Chap8. 제 2의 JVM 언어를 활용한 테스트 작성 8.1. JVM 언어 혼용의 조건 - 제 2의 JVM 언어의 역사는 파이썬 언어의 JVM 버전인 자이썬(Jython)으로부터 시작되었다. 자이썬은 사용자를 충분히 확보하지 못하여 결국 2005년에 실질적인 개발이 중단되었지만, 또 다른 JVM 언어들이 등장하는 계기가 되어주었다. - 2001년에는 자바판 루비인 JRuby, 2003년에는 Groovy 가 발표되었다. 2003년은 Scalar 가 나온 해이기도 하다. 2007년 Lisp 를 변형하여 만든 Closure 역시 강력한 JVM 언어이다. 8.1.1. 일반적인 이점 - JVM non-java 언어의 장점은.. 자질구레한 문법이 적어 핵심 로직이 잘 .. 2019. 3. 18.
[Effective Unit Testing] Chap7. 테스트 가능 설계 [Effective Unit Testing] Chap7. 테스트 가능 설계 7.1. 테스트 가능 설계란? -테스트 가능 설계의 가장 큰 의의는 당연히 코드를 더 잘 테스트할 수 있도록 해준다는 것이다. -테스트 용이성(testability)이란 테스트할 수 있는 소프트웨어냐 아니냐를 설명하는 용어가 아니다.그보다는 소프트웨어를 멀마나 쉽게 테스트할 수 있느냐를 평가하는 용어다.단위 테스트를 위한 시나리오 준비는 식은 죽 먹기여야 한다.테스트 용이성이 떨어질수록 테스트를 작성하는 프로그래머의 부담이 커진다. 7.1.1. 모듈러 설계 -제품은 특정 역할을 담당하는 독립 모듈로 구성된다는 그 본질만 잘 반영하면 자연스럽게 모듈러 설계가 만들어진다.제품의 전체 기능을 뚜렷한 역할로 나누고 그 역할 각각을 독립된.. 2019. 3. 17.
[Effective Unit Testing] Chap6. 신뢰성 [Effective Unit Testing] Chap6. 신뢰성 -테스트를 작성하는 이유이기도 한 신뢰할 수 있는 코드를 만들기 위해서는 테스트 자체도 믿음직해야 한다.소프트웨어 개발에는 코드를 수정하고 개선하고 관리하는 일이 빠질 수 없는데, 만약 테스트를 믿지 못한다면 아무 관련 없어 보이는 코드라도 쉽사리 바꾸지 못한다. -주석은 이해를 돕기 위한 설명글로 코드에 적어 넣을 수 있다는 요긴함이 있지만,자칫 한눈파는 순간 엉터리 정보로 둔갑하는가하면, 본문 전체를 주석 처리한 테스트는 실제로는 아무것도 안 하면서 성공했다고 보고되기도 한다. 6.1. 주석으로 변한 테스트 -주석으로 변한 테스트(Commented-out Test)는 아무런 설명도 없이 읽는 이에게 혼란을 가져다 준다. 6.1.1. 예시.. 2019. 3. 15.
[Effective Unit Testing] Chap5. 유지보수성 [Effective Unit Testing] Chap5. 유지보수성 -코드는 쓰이는 횟수보다 읽히는 횟수가 훨씬 많다.그리고 현실에서의 작성의 대부분은 기존 코드를 수정하거나 확장하는 걸 뜻한다.이를 유지보수라 하기도 하고 개발이라 부르기도 한다. -테스트도 태생은 제품 코드와 다를 바 없는 코드인지라, 근본적으로 똑같이 불안정하다.자동화된 단위 테스트를 작성할 때도 이런 취약성에 주의하면서 관리해야 한다. 5.1. 중복-모든 악의 근원 넘버원은 “어설픈 최적화” 이고, 넘버투는 “중복(Duplication)이다. 5.1.1. 예시 -상수 중복은 given 과 then 의 상수를 따로 정의해서 쓰는 것을 이야기한다.상수 중복은 지역 변수로 만들어서 제거할 수 있다. 5.1.2. 개선 방법 -구조 중복과 .. 2019. 3. 14.
[Effective Unit Testing] Chap4. 가독성 [Effective Unit Testing] Chap4. 가독성 -테스트를 읽은 프로그래머는 코드가 “해야 할 일”을 이해할 수 있어야 한다.또한, 테스트를 실행한 후에는 코드가 실제로 "한 일”이 무엇인지 말할 수 있어야 한다. -테스트의 핵심인 단언문은 대상 코드의 올바른 동작을 규정한다. -결국, 테스트 코드는 읽기 쉬워야 한다.테스트가 무슨 일을 하는지 파악하기 위해 머리를 쥐어뜯는 일은 없어야 한다. -테스트 냄새는 숱하게 많지만, 그중에서도 가장 흔한 냄새는 바로 "기본 타입 단언”이다. 4.1. 기본 타입 단언 -단언문은 가정이나 의도를 명시해야 한다.또한 코드의 동작을 서술하는 문장이어야 한다.기본 타입 단언(Primitive Assertion)이란 단언하려는 이유나 의도가 의미를 알 수 .. 2019. 3. 13.
반응형