사용자 도구

사이트 도구


groovy:unittest

Groovy Unit Test

Stub

  • 기본 Stub 형태
    // Class Foo가 있을 때
    import groovy.mock.interceptor.StubFor
     
    def fooStub = new StubFor(Foo)
     
    // 메소드 행위 지정
    fooStub.demand.firstMethod { /* 행위 */ }
    fooStub.demand.secondMethod { /* 행우 */ }
     
    fooStub.use {
        테스트코드
    }
  • 동일 메소드에 대한 demand를 여러본 호출하면 그 이후 메소드 호출시 demand 순서대로 행위를 수행함.
  • someStub.demand.methodOne(0..35) { … } : 해당 메소드 호출 횟수를 Range로 지정한다.
  • 메소드 인자는 Colosure에서 받는다.
    someStub.demand.methodOne { number ->
        assert 0 == number % 2
        return 1
    }
  • 메소드 호출 검증. use 뒤에 verify()를 넣는다.
    someStub.expect.verify()

Mock

  • 기본적으로는 Stub과 같으나, 동작을 엄격하게 정의하고 확인한다.
  • 스텁의 경우는 테스트되는 클래스를 주변에서 독립시킨 후 내부의 변화에 대해 검증한다. 목의 경우는 검증의 초점이 그 클래스와 협력자들 간의 상호 작용으로 옮겨 간다. 클래스가 외부 세계와의 '규약protocol'을 잘 지키는지 검증하는 것이다.
  • Mock과는 달리 verify() 없이 동작(메소드)가 순서대로 모두 호출 됐는지 검증한다.
  • 기본 Mock 형태
    import groovy.mock.interceptor.MockFor
     
    def fooMock = new MockFor(Foo)
     
    fooMock.demand.sort()
    fooMock.demand.getMachines { /* 행위 */}
     
    fooMock.use {
        테스트 코드
    }

Java Unit Test로 수행하기

  • groovy.util.AllTestSuite를 사용하면 그루비 테스트를 Java 단위 테스트인 것 처럼 호출할 수 있고, 이 때문에 각종 Java IDE에서 JUnit 테스터와 자연스럽게 통합된다.
  • -Dgroovy.test.dir=src
  • -Dgroovy.test.pattern=*Test.groovy
  • 코드로 테스트 수트 만들기
    def suite = AllTestSuite.suite(".", "*Test.groovy")
    junit.textui.TestRunner.run(suite)

shouldFail for JUnit 4

class ArithmeticTest {
    final shouldFail = new GroovyTestCase().&shouldFail
 
    @Test
    void divideByZero() {
        String message = shouldFail(ArithmeticException) {
            println 1/0
        }
        assertEquals message, "expected exception message."
    }
}
groovy/unittest.txt · 마지막으로 수정됨: 2014/12/22 22:36 저자 kwon37xi