Java 重新运行测试时出现NullPointerException

Java 重新运行测试时出现NullPointerException,java,unit-testing,playframework,playframework-1.x,Java,Unit Testing,Playframework,Playframework 1.x,我正在对一个基于Play框架的应用程序进行单元测试。正如我在文档中所读到的,为了清除状态,在每次测试之前,我都会重新加载夹具列表,如下所示: @Before public void setUp() { Fixtures.deleteAll(); Fixtures.load("data.yml"); Logger.info("FIXTURES RELOADED"); } 然后我去了基于Web的测试平台(http://loca

我正在对一个基于Play框架的应用程序进行单元测试。正如我在文档中所读到的,为了清除状态,在每次测试之前,我都会重新加载夹具列表,如下所示:

    @Before
    public void setUp() {
        Fixtures.deleteAll();
        Fixtures.load("data.yml");
        Logger.info("FIXTURES RELOADED");
    }
然后我去了基于Web的测试平台
(http://localhost:9000/@测试)
,选择一个处理获取某些数据的测试
(用户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,同时在每次测试中尝试获取ID为1的用户


您可以获取新创建的用户ID并在测试中使用它,也可以通过您明确知道的其他字段查找用户。

每次运行期间是否调用setup()?在哪里将用户对象插入数据库?尝试
@BeforeMethod
-而不是在fixture中的
@Before
@baraky。加载…@Sudhanshu,是的,这就是为什么我在末尾放了一个日志语句,这正是问题所在。因此,在我的测试中,我将避免使用findById获取用户,而是使用一些我确信不会更改的东西,比如user.find(“byUsername”,“testuser1”)