ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Chapter 2. JUnit과 Hamcrest 봅시다
    카테고리 없음 2020. 2. 12. 20:41

    현재 전 세계에서 가장 널리 사용되고 있는 Java 단위의 테스트 프레임워크로, TDD의 근간이 되는 프레임워크이다. JUnit은 단위 테스트를 수행함에 있어 기본적으로 다음과 같은 기능을 제공합니다. - 테스트 결과가 예상과 같은지를 판별하는 단정문(assertions) - 여러 테스트에서 공용할 수 있는 테스트 픽스처(test fixture) - 테스트 작업을 할 수 있도록 하는 테스트 러그대(test runner)


    테스트를 반복적으로 수행하도록 하고 매번 히가시 1 한 결과를 얻을 수 있도록 도움을 주는 '기반이 되는 상태 나쁘지 않은 환경'을 의미하는 것이다. 1관 시험 실행 환경이라며 왜는 시험 상황(test context)라고 부르기도 할 것이다. 테스트 케이스에서 사용하는 오브젝트 인스턴스를 만들거나 데이터베이스와 연동되는 참조를 선언하 이다도우은카, 파 1이 나쁘지 않고 네트워크 등의 자원을 만들어 지정하는 것 이다도우은카하는 등의 작업 혹은 그 작업의 결과로 만들어진 대상을 통칭하는 것이다.​*1장에서 사용한 setUp, tearDown메서드를 테스트 피크스챠ー메솟도(test fixture method)라고 할 것이다.테스트 케이스와 테스트 메서드 단위 테스트 케이스와 단위 테스트 메서드가 제대로 된 명칭이며, 두 가지 용어가 혼용되어 사용된다.​​​​​​​


    JUnit3규칙하? 테스트 케이스를 상속한다. 예)AccountTest extends TestCase2. 시험 방법의 이름은 확신하게 test에서 시작해야 합니다. 예)testGetAddress(), testCalculateValue()등 ​ ​ JUnit3의 구성 요소 하나. 테스트 픽스처 메서드 (Test Fixture Method) - set Up ( ) - tear Down ( ) )


    >


    ​ ​ 2. 던 전 문(Assertions)-assertEquals([message], expected, actual):두 값이 같은지 비교한단 정 문-assertSame([message], expected, actual)-assertNotSame([message], expected, actual):두 개체가 정예기 이 1 원하는 객체나 쥬소가프에 비교한단 정 문-assertTrue([message], expected)-assertFalse([message], expected):예상치의 참/거짓을 판별한단 정 문-assertNull([message], expected)-assertNotNull([message], expected):대상 값의 null는지 판단한단 정 문-fail([message]):해당 테스트 케이스, 실패 만 1아직 테스트 케이스를 작성하고있습니다만 완료되지 않고 구현을 중단해야 할 경우, 마지막 부분에 추가 ​ ​ ​ 3. 테스트로 자네(Test Runner)-junit.swingui.TestRunner.run(테스트 클래스 class);-junit.testui.TestRunner.run(테스트 클래스 class);-junit.awtui.TestRunner.run(테스트 클래스 class);​ ​ ​ 4. 시험 스위트(Test suite)-몇가지 테스트 사례를 한꺼번에 수행하려 할 때-시험 스위트는 테스트 케이스로 다른 시험 스위트를 포함시킬 수다. - 메서드는 명확화 public static Test suite()일 것. 테스트 추가는 suite.add Test Suite(테스트 클래스.class) 형식을 갖는다.​ ​ ​ ​ JUnit3테스트 케이스 작성의 예 AccountTest클래스를 JUnit3버전에 맞추어 변경한 소스


    ​ ​ JUnit3에서 작성한 테스트 클래스의 구조


    1. Test Case를 상속(extends)받을 클래스를 만든다.2. 테스트에 사용하는 테스토피크스챠ー을 정의한다.3.setUp메서드를 사용하고 픽스처의 상태를 초기화한다.4. 이름이 test로 시작되는 테스트 케이스를 작성한다.5.tearDown테스트를 마친 뒤 픽스처를 정리하는 코드를 작성한다.​​​​​​


    JUnit4의 큰 변경 사항:Java 5영아 노테이션(Annotation)지원-비교 포효은을 위한 테스토메쵸라이브라리(Test Matcher Library)의 Hamcrest도입 ​ ​ ​ 유아 노테이션(Annotation)프리입니다 워크의 내부 모델에 대한 자세한 이해 없이도 각 메서드의 사용 의도를 명확히 문서화합니다.​ ​ ​@Test메서드의 이름과 관계 없이@Test유아 노테이션을 붙이면 테스트 메서드에서 인식합니다. 더 이상 소문자 test에서 메서드의 이름을 시작하지 않아도 된다.


    ​ ​ ​ 시험 피크스챠ー메솟도의 추가 지원 JUnit3에서는 setUp, tearDown두 시험 피크스챠ー메솟도을 다시 공문지만 JUnit4에서는 각각을@Before@After라는 이름의 어린이 노테이션에 지원했다. 역시@BeforeClass@AfterClass두 아이 노테이션을 이용하고 하 쟈싱의 테스트 클래스 내에서 한번만 실행하는 메소드를 만들 수 있게 됐다.


    >


    ​ ​ ​ ​ 예외 테스트@Test의 이야기 노테이션의 속성 중 expected를 이용하고 예외 처리를 테스트합니다.


    ​ ​ ​ ​ ​ 시험 가끔 제한@Test의 속성과 timeout를 지정해서 그 값으로 밀리초 단위 테테로울 정한 뒤 그 때 나에게 테스트 메서드가 실행 완료하지 않으면 실패한 테스트 케이스로 간주합니다.


    ​ ​ ​ ​ ​ 시험 무시@Ignore가 달린 테스트 메서드는 해당 아동 노테이션을 지기 전까지 수행하지 않은.


    ​ ​ ​ ​ ​ 배열 지원의 배열을 비교하는 기능으로 배열 원소의 자리 순서 기준 equals비교가 이루어지기 때문에 비록 내부의 값 집합은 동 1 해도 순서가 다르면 시험이 실패합니다.


    ​ ​ ​ ​ ​@RunWithJUnit플레이어입니다 직업 안정소에 있어서 테스트 클래스 내에 존재하는 각각의 테스트 메서드의 실행을 맡고 있는 반을 테스트라입니다 사람(Test Runner)라고 합니다. 이클립스에서는 JUnit의 BlockJUnit4ClassRunner라는 시험 로입니다 그리고 반을 실행시키고 그 결과를 분석하여 사용자에 표시한다. @RunWith에노테이션은 JUnit에 내장된 기본 시험 로입니다, 그 대신@RunWith로 지정된 클래스를 이용하고 학급 내의 테스트 메서드를 실행하도록 지정하는 에노테이션이다. Spring Framework에서는 SpringJUnit4ClassRunner 같은 테스트 로입니다요, 반이 존재합니다.​ ​ ​ ​ ​@SuiteClasses@SuiteClasses에노테이션을 이용하여 복수의 테스트 클래스를 하나그와루죠크에 수행할 수 있다. JUnit3에서 static Test Suite()메소드와 같은도 했다 하나 서울 실행합니다.


    파라미터화된 테스트(Parameterized Test)하나의 메서드에 대해 다양한 테스트 값을 정리하여 실행하고자 할 때 사용합니다. 테스트 메서드가 많아지거나 구문이 용장해질 수 있지만 파라미터화된 테스트를 사용하면 테스트 케이스를 효율적으로 작성할 수 있다.규칙(Rule) 하나의 테스트 클래스 내에서 각 테스트 메서드의 동작방식을 재정의하거나 추가하기 위해 사용하는 기능이었다.이론(Theory) 테스트 데이터에 관계없이 작성 대상의 메서드를 항성 유지해야 하는 논리적인 규칙을 포함할 때 사용합니다. ​​​​​​​​


    Matcher 라이브러리에서 필터가 나쁘지 않은 검색 등을 위해 값을 비교할 때 더 편리하게 사용할 수 있도록 지원하는 라이브러리. Matcher란 이름의 당신으로 어떤 값의 상호 일치 여부가 나쁘지 않고 특정 규칙 준수 여부 등을 판별하기 위해 만들어진 메서드 나쁘지 않은 오브젝트를 말합니다. 따라서, Hamcrest는, 여러가지 Matcher가 모인, Matcher 집합체이다.Hamcrest 라이브러리는 기본적으로 assert Equals 대신 assert That이라는 구문의 사용을 권장합니다.


    Matcher 구문(메서드)은 기본적으로 static으로 선언되어 있으며 리턴 값은 Matcher 클래스로 되어 있다. 프로그래밍의 문장 자체만 보면 Haecrest 사용여부에 별 차이가 없어 보이지만 전반적으로 더 읽기 쉬운 자연어(natural language)에 가깝게 바뀐다.


    assert That는 org.junit.Assert 클래스 내에 존재하고, is를 비롯한 Matcher는 org.hamcrest.Core Matchers 클래스를 통해 호출한다.Hamcrest 라이브러리는 기본적으로 core 패키지와 기타 확장 패키지로 구성되어 있다.


    코어


    오브젝트


    논리(Logical)


    빈즈


    컬렉션


    숫자(Number)


    텍스트(Text)


    ​​​


    만일 Hamcrest 라이브러리가 제공하는 Matcher 이외의 나만의 비교구문 Matcher를 만들고 싶다면 TypeSafeMatcher를 상속하여 matchesSafelt, describeTo를 재정의하면 된다. TypeSafeMatcher를 상속한 IsNot ANumber 클래스


    사용자가 직접 정의하여 만든 새로 Matcher인 not ANumber의 실제 사용 방식


    *코드가 소설처럼 문맥을 가지고 읽기 쉽게 하면 되는 코드였다. 소스 코드를 작성하는 목적은 컴퓨터와 잘 대화하기 위해서가 아니라 다른 사람과 더 잘 대화하기 위해서라는 사실을 잊자. 출처-테스트 주도 개발: 고품질 쾌속 개발을 위한 TDD 실천법과 도구


    댓글

Designed by Tistory.