我正在从事一个有更多人和分支机构的项目。有一个由其他人编写的测试,奇怪的是它在某些环境中通过了而在另一些环境中却失败了。
我们在不同的分支上工作,但我们确保我们看到的是相同版本的项目
git pull origin develop
代码如下:
@Test(expected = RandomCustomException.class)
public void saveReturnsWithCustomException() throws
RandomCustomException {
xService.save(notValidX);
}
在某些环境中它会抛出 NullPointerException,从而失败,在其他一些环境中它会抛出 RandomCustomException。
我们已经检查过了,很奇怪,但是所有相关代码似乎在所有环境中都完全相同。
我的 xService 看起来像:
public X saveX(X x) throws RandomCustomException {
if (!validXName(X.getName())) {
throw new RandomCustomException("The given name wasn't correct or the field is empty!");
}
return xRepository.save(x);
xRepository 在测试中被模拟。
x存储库:
public interface xRepository extends JpaRepository<X, Long> {
X findByApplicationUser(ApplicationUser applicationUser);
}
有没有人建议问题是什么?
最佳答案
问题是,在这个方法中,x 变量不能保证为 Not Null,因此当您调用方法 getName 时,它可能会给出 NullPointerException。
public X saveX(X x) throws RandomCustomException {
if (!validXName(X.getName())) {
throw new RandomCustomException("The given name wasn't correct or the field is empty!");
}
return xRepository.save(x);
我只能推测原因可能是“x”是一个 bean。实例化可能无法满足此环境中的所有要求。您可以尝试将日志转为调试以查找它。
关于java - 测试抛出 NullPointerException 而不是 RandomCustomException,但仅在某些环境中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54457268/