我正在与更多的人和分支机构进行项目。有一个由其他人编写的测试,在某些环境中怪异地通过了,在其他一些环境中却失败了。
我们正在不同的分支上工作,但是我们确保使用相同的版本查看项目
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在测试中被模拟。
xRepository:
public interface xRepository extends JpaRepository<X, Long> {
X findByApplicationUser(ApplicationUser applicationUser);
}
有人建议这个问题是什么吗?
答案 0 :(得分:1)
问题在于,在此方法中,x变量未保证不为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。它可能无法满足此环境中的所有实例化要求。您可以尝试将日志调试以寻找它。