2013-03-20 82 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),選擇一個測試,處理獲取一些數據(User u = User.findById(1l);),然後斷言數據。有用。

但是,如果我嘗試再次選擇測試,並重新運行它,它與失敗:

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

如果我完全停止應用程序並重新啓動它,它再次運行(第一次),但如果你每分鐘做10次,開始和停止需要一點時間,而且非常繁瑣。

我使用的播放1.2.5

+0

是否在每次運行期間調用setup()? – 2013-03-20 09:06:43

+0

你在哪裏插入你的用戶對象到數據庫? – BobTheBuilder 2013-03-20 09:06:45

+0

嘗試'@ BeforeMethod' - 而不是'@ Before'。 – SudoRahul 2013-03-20 09:07:22

回答

1

的問題是自動遞增的用戶ID(每插入)嘗試獲取對每個測試ID 1用戶。

您可以獲取新創建的用戶標識並將其用於您的測試或通過您確定知道的其他字段查找用戶。

+0

好點!我現在就試試 – preslavrachev 2013-03-20 09:12:59

+0

這就是問題所在。所以,在我的測試中,我會避​​免讓用戶使用findById,而是確保不會改變,比如User.find(「byUsername」,「testuser1」) – preslavrachev 2013-03-20 09:59:40

+0

很高興我能幫上忙!你可以upvote,如果你想:) – BobTheBuilder 2013-03-20 10:04:57

相關問題