2013-03-20 6 views
2

저는 Play Framework 기반 응용 프로그램을 단위 테스트하고 있습니다. 나는 상태를 지우기 위해서, 문서를 읽을 모든 테스트 전에 이런 비품 목록을 다시로드 : 다음테스트를 다시 실행할 때 NullPointerException이 발생했습니다.

@Before 
    public void setUp() { 
     Fixtures.deleteAll(); 
     Fixtures.load("data.yml"); 
     Logger.info("FIXTURES RELOADED"); 
    } 

내가 Web.based 테스트 플랫폼 (http://localhost:9000/@tests)로 이동을 테스트를 선택하는 것이 일부 데이터를 가져 오는 것으로 처리하고 데이터에 대해 어설 션합니다. 그것은 작동합니다. 내가 테스트를 다시 선택하고 다시 실행하려는 경우와

그러나, 실패 : 나는 완전히 응용 프로그램을 중지하고 다시 시작하면

A java.lang.NullPointerException has been caught, Try to read name on null object models.User 

가, 다시 (처음)를 실행하지만, 시작과 멈춤은 시간이 조금 걸리고 분당 10 번하면 상당히 지루합니다. 모든 테스트에 ID 1을 가지고있는 사용자를 얻으려고 노력하는 동안 나는 플레이를 1.2.5

+0

모든 실행 중에 setup()이 호출 되었습니까? –

+0

사용자 개체를 DB에 어디에 삽입합니까? – BobTheBuilder

+0

'@ BeforeMethod' 대신'@ Before'를 사용하십시오. 내가 말 – SudoRahul

답변

1

문제를 사용하고

는 (모든 삽입에) 자동 증가 사용자 ID입니다.

새로 생성 된 사용자 ID를 가져 와서 테스트에 사용하거나 확실히 알고있는 다른 필드로 사용자를 찾을 수 있습니다.

+0

좋은 지적입니다! 나는 그것을 지금 시도 할 것이다 – preslavrachev

+0

그것은 정확하게 문제이었다. 따라서 필자의 테스트에서는 findById를 사용하지 않고 User.find ("byUsername", "testuser1")와 같이 변경되지 않을 것이라고 확신합니다. – preslavrachev

+0

기꺼이 도와 드리겠습니다! 당신이 원한다면 upvote 수 있습니다 :) – BobTheBuilder

관련 문제