java - 测试抛出 NullPointerException 而不是 RandomCustomException,但仅在某些环境中
问题描述
我正在从事一个有更多人和分支机构的项目。有一个测试,由其他人编写,奇怪地在某些环境中通过而在其他环境中失败。
我们正在开发不同的分支,但我们确保看到相同版本的项目
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。它可能无法满足此环境中的所有实例化要求。您可以尝试将日志转为调试以查找它。
推荐阅读
- c# - 如何使用 Blazor c# 添加内联 html
- typescript - 如何解决 webdriver.io 引入的类型冲突
- java - 卡夫卡未捕获的异常
- reactjs - 我有一个反应应用程序,它应该在点击时呈现子组件卡。当试图将孩子从父母那里传下来时,父母会打破
- ios - 如果我们在自定义对象上调用 autorelease 两次会发生什么?
- websocket - xmpp如何进行实时连接
- reactjs - React:如何使用自己的数据集重用组件?
- excel - 将excel数据分组到熊猫数据框
- python - C分类1 vs无限集
- sql - SQL:将表 A 与表 B 连接 [( a.Col1 = b.Col1 && a.Col2 = b.Col2) 和 max(transacrionTime)]