【发布时间】:2021-07-10 23:42:06
【问题描述】:
我正在尝试对某个方法进行测试,但总是遇到同样的错误。
这是我的测试课:
private Car car;
@Autowired
protected CarService carService;
@Mock
private CarRepository carRepository;
@BeforeEach
void setUp() {
car = new Car();
car.setId(4L);
car.setName("test1");
car.setUrlCar("https://carconfigurator.ferrari.com/assets/cars/portofinom/packages/default/car-ferrari-portofino-m_splash.jpg");
car.setColor("red");
carRepository.save(car);
}
@Test
void getCarById() throws Exception {
Car res = this.carService.getCarById(4L);
Assertions.assertTrue(res != null);
}
CarService 类是:
@Autowired
private carRepository carRepository;
public Iterable<Car> getAllCars(){
return carRepository.findAll();
}
public Car getCarById(Long id){
return carRepository.findById(id).orElse(null);
}
轨迹是:
org.opentest4j.AssertionFailedError: expected: <true> but was: <false>
at org.junit.jupiter.api.AssertionUtils.fail(AssertionUtils.java:39)
跟踪指向Assertions.assertTrue(res != null); 行,我不知道如何解决该错误。如果你能帮助我,请。
【问题讨论】:
-
嗯,你有一个空引用,你希望引用汽车。您编写的哪一行代码可以返回 null 而不是对 Car 的引用?
-
第一步是确保您理解信息。第二步是尝试诊断原因。第三步是与我们分享您的尝试,并具体解释您发现的令人困惑或出乎意料的地方,即具体是什么阻止了您自己修复它。我的猜测是它与
CarRepository.findById或CarRepository.save的内容有关;但我们只能帮助我们可以看到的代码。我也不清楚你期望.orElse(null)部分在这里完成什么。在什么条件下它会改变结果?
标签: java spring-boot unit-testing testing