我正在对基于 Play Framework 的应用程序进行单元测试。正如我在文档中读到的那样,为了清除状态,在每次测试之前我都会像这样重新加载灯具列表:
@Before
public void setUp() {
Fixtures.deleteAll();
Fixtures.load("data.yml");
Logger.info("FIXTURES RELOADED");
}
然后我转到基于 Web 的测试平台 (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 次,则启动和停止会花费一些时间并且非常乏味。
我正在使用 Play 1.2.5
最佳答案
问题是在每次测试时尝试获取 ID 为 1 的用户时自动递增用户 ID(在每次插入时)。
您可以获取新创建的用户 ID 并在您的测试中使用它,或者通过您肯定知道的其他字段查找用户。
关于java - 重新运行测试时出现 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15519196/