2013-03-20 105 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

相关问题