아노미7
64
2017-08-22 09:15:22
6
2146

spring-test junit case 에러 관련 질문입니다.


junit에서 의존성 주입을 위한 설정을 하니 아래와 같은 에러메시지가 뜹니다.

GenericXmlApplication으로 빈을 불러와도 그렇고, @RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:/")와 같은 에노테이션 설정을 해도 아래와 같은 오류가 뜹니다.

applicationContext.xml 파일을 설정 내용은


    <context:component-scan base-package="com.SpringBoard">
        <context:exclude-filter expression="org.springframework.stereotype.Controller"
            type="annotation" />
    </context:component-scan>
    <context:annotation-config></context:annotation-config>

입니다. 아래는 에러메시지 입니다.




java.lang.Exception: No tests found matching [{ExactMatcher:fDisplayName=createBoardTest], {ExactMatcher:fDisplayName=createBoardTest(com.SpringBoard.model.BoardDAOTest)], {LeadingIdentifierMatcher:fClassName=com.SpringBoard.model.BoardDAOTest,fLeadingIdentifier=createBoardTest]] from org.junit.internal.requests.ClassRequest@5e8c92f4
    at org.junit.internal.requests.FilterRequest.getRunner(FilterRequest.java:35)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createFilteredTest(JUnit4TestLoader.java:77)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:68)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:43)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:444)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)

0
0
  • 답변 6

  • kenu
    42k
    2017-08-22 10:12:21

    TestCase 소스는 어떻게 되었나요?

    test가 없다는 메시지인데요.

    1
  • 아노미7
    64
    2017-08-22 12:08:51 작성 2017-08-22 12:09:39 수정됨

    @kenu

    
    
    public class BoardDAOTest {
    	SqlSession session;
    	BoardService boardService;
    	BoardVO vo;
    	GenericXmlApplicationContext ctx;
    	private static final Logger logger = LoggerFactory.getLogger(BoardDAOTest.class);
    
    	@Before
    	public void setup() throws Exception {
    		session = MybatisSqlSessionFactory.openSession();
    		logger.debug("세션을 성공적으로 불러왔습니다.");
    		logger.debug("DAO 객체 생성완료");
    		ctx = new GenericXmlApplicationContext("classpath:/applicationContext.xml");
    		boardService = (BoardService) ctx.getBean("boardService");
    		vo = new BoardVO();
    		vo.setId(7);
    		vo.setName("윤도담");
    		vo.setSubject("안녕");
    		vo.setContent("반가워요22");
    		vo.setRegDate("2017-10-2-2");
    		vo.setCount(4);
    		vo.setPassword("1234");
    		logger.debug("테스트 객체 생성완료");
    	}
    	
    	@AfterClass
    	public void end() {
    		ctx.close();
    	}
    
    	@Test
    	public void createBoardTest() {
    		boardService.createBoard(vo);
    	}
    	
    	@Test
    	public void getBoardTest() throws Exception {
    		BoardVO board = boardService.getBoard(vo.getId());
    		assertNotNull(board);
    		logger.debug(board.toString());
    	}
    	
    	@Test
    	public void getBoardListTest() throws Exception {
    		List<BoardVO> list = boardService.getBoardList();
    		assertNotNull(list);
    		for (BoardVO board : list) {
    			logger.debug(board.toString());
    		}
    	}
    	
    	@Test
    	public void modifyBoardTest() throws Exception {
    		BoardVO up = new BoardVO();
    		up.setId(7);
    		up.setSubject("나가");
    		up.setContent("22324");
    		boardService.modifyBoard(up);
    	}
    	@Test
    	public void deleteBoardTest() throws Exception {
    		boardService.deleteBoard(vo.getId());
    		assertNull(boardService.getBoard(vo.getId()));
    	}
    }


    네 코드는 위와 같아요

    0
  • kenu
    42k
    2017-08-22 12:14:00

    createBoardTest() 에 assert* 가 없네요.

    No tests found matching [{ExactMatcher:fDisplayName=createBoardTest]

    0
  • 아노미7
    64
    2017-08-22 12:20:07 작성 2017-08-22 12:20:49 수정됨

    @kenu

    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration("classpath:/applicationContext.xml")
    public class BoardServiceImplTest {
    
    	@Test
    	public void test() {
    		fail("Not yet implemented");
    	}
    
    }
    

    위와 같은 테스트코드를 새로 만들어도 같은 메시지가 떠요.. spring-test를 이용한 테스트 코드는 모두 실행이 안되고 있습니다.

    아래는 에러메시지에요.

    java.lang.Exception: No tests found matching [{ExactMatcher:fDisplayName=test], {ExactMatcher:fDisplayName=test(com.SpringBoard.model.BoardServiceImplTest)], {LeadingIdentifierMatcher:fClassName=com.SpringBoard.model.BoardServiceImplTest,fLeadingIdentifier=test]] from org.junit.internal.requests.ClassRequest@63c12fb0
        at org.junit.internal.requests.FilterRequest.getRunner(FilterRequest.java:35)
        at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createFilteredTest(JUnit4TestLoader.java:77)
        at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:68)
        at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:43)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:444)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)


    0
  • kenu
    42k
    2017-08-22 12:28:49

    https://stackoverflow.com/questions/2332832/no-tests-found-with-test-runner-junit-4

    0
  • 아노미7
    64
    2017-08-22 22:56:35

    감사합니다.

    스프링 버전 문제인가 싶어서 4.1.6으로 바꾸니깐 ContextLoader가 ApplicationContext를 불러오더라고요.

    설정파일은 읽어오고 의존성은 주입되는데 spring-core 파일을 못읽어온다는 에러가 떠서 완전 절망해서 다른 테이블로 테스트할려고 DAO, VO부터 다시 작성하고 설정도 다 다시하고 있다가 혹시나 싶어서 applicationContext에 name 스페이스에 jdbc를 추가했더니 되더군요.

    그래서 이게 문제인가 싶어서 jdbc 네임스페이스에서 뺐더니 또 되고......

    스택 오버 플로우에 봤던것처럼 정말 이클립스 자체의 문제인거같네요..

    이번 오류에서 느낀점은 Junit에서 메소드 이름은 중요하다는 것...그리고 의존성 라이브러리에서 버전 선택도 꽤 중요하다는 것을 배운것같아요.

    도움주신 kenu님 감사합니다.


    1
  • 로그인을 하시면 답변을 등록할 수 있습니다.