달력

52024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
Spring 2.5.6과 JUnit 4.5 로 테스트 코드를 작성할 때 테스트를 실행할 때 다음과 같은 에러가 발생합니다.

java.lang.NoClassDefFoundError: org/junit/Assume$AssumptionViolatedException
    at org.springframework.test.context.junit4.SpringMethodRoadie.runTestMethod(SpringMethodRoadie.java:240)
    at org.springframework.test.context.junit4.SpringMethodRoadie$RunBeforesThenTestThenAfters.run(SpringMethodRoadie.java:333)
    at org.springframework.test.context.junit4.SpringMethodRoadie.runWithRepetitions(SpringMethodRoadie.java:217)
    at org.springframework.test.context.junit4.SpringMethodRoadie.runTest(SpringMethodRoadie.java:197)
    at org.springframework.test.context.junit4.SpringMethodRoadie.run(SpringMethodRoadie.java:143)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.invokeTestMethod(SpringJUnit4ClassRunner.java:160)
    at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:61)
    at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:54)
    at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:34)
    at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:44)
    at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:52)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:97)

제가 사용한 JUnit 의 jar파일은 junit-4.5.jar 인데 이 파일을 사용하면 발생한다는 군요.
이 에러를 해결하기 위해서는 JUnit 4.4를 사용하시거나 junit-dep-4.5.jar 파일을 사용해야 합니다.

● 참고 : http://jira.springframework.org/browse/SPR-5145

Posted by fromm0
|
[이전 블로그 백업글][2008.2.14]

* 기존의 3.8을 사용하는 테스트 코드

3.8버전을 사용하는 기존의 소스에서 볼껀 getConfigLocations() 메소드의 내용과 onSetUp(), onTearDown() 메소드의 오버라이드 그리고 일반적인 형태의 testGetMenuList() 라는 테스트 메소드입니다. 일단 4.x 용 코드를 보면서 차이점을 알아보겠습니다.

* 4.x를 사용하는 테스트 코드


클래스 정의 상단에 다음과 같은 코드가 있습니다.


1. @ContextConfiguration 기존에 getConfigLocations() 메소드에서 해주던 컨텍스트 설정파일의 위치를 어노테이션으로 처리하도록 변경되었습니다.

2. @RunWith Junit4를 사용하도록 RunWith 어노테이션을 사용합니다.

3. @Autowired, @Resource MenuDao 타입의 변수위에는 @Autowired 어노테이션을 사용중입니다. 이것은 타입에 의한 autowire를 하도록 지정하는 것입니다. 만약에 name에 의한 autowire를 하고자 한다면 @Resource 어노테이션으로 대체하면 됩니다.

4. @Before, @After 앞서 오버라이드되었던 두개의 메소드 onSetUp(), onTearDown() 는 메소드 이름 자체는 의미가 없고 각각 @Before, @After라는 어노테이션을 사용함으로써 각각의 기능을 수행합니다.

5. @Test 그리고 실제 테스트용 메소드는 @Test 어노테이션을 사용해서 인식하도록 하고 있습니다.

Cannot find the class file for org.junit.internal.runners.JUnit4ClassRunner 에러가 발생한다면 eclipse europa가 가지고 있는 Junit4의 상세버전은 4.3.1입니다. 하지만 Spring 2.5에서 Junit4를 사용하기 위해서는 4.4이상의 버전이 있어야만 작동합니다. 여기서 굳이 Junit 홈페이지에서 4.4를 받을 필요는 없고 spring-framework-2.5.x-with-dependencies.zip 의 lib안에 보면 Junit 디렉토리안에서 4.4 버전의 jar파일을 찾을수 있습니다.
Posted by fromm0
|