[英]JUnit How to assertTrue/Equals on a Optional and a object
如何使用 assert.equals 在 Optional 和 Object 之间进行测试? 调试后它显示相同的值,但我的测试仍然无法通过。 返回错误:在 org.springframework.test.util.AssertionErrors.assertTrue
我的测试类看起来也如下:
@RunWith(SpringJUnit4ClassRunner.class)
@ActiveProfiles("test")
@SpringBootTest
public class DishServiceTest {
private static final String DISH_NAME = "Kaas";
private static final String DISH_TYPE = "Voorgerecht";
@Autowired
private DishService dishService;
@Test
public void findById(){
//execute
Dish dish = createDish(DISH_NAME, DISH_TYPE);
Long dishId = dish.getId();
Optional<Dish> dish2 = dishService.findById(dishId);
//verify
assertNotNull(dish2);
//assertEquals(Optional.of(dish2), dish);
assertTrue("created a dish" ,Optional.of(dish2).equals(dish));
}
private Dish createDish(String dishName, String dishType) {
Dish dish = new Dish();
dish.setDishName(dishName);
dish.setDishType(dishType);
Dish retval = dishService.save(dish);
return retval;
}
我的调试结果:
DishService.findById
返回一个Optional
,它从不为null
; 因此,测试中的assertNotNull
是空操作。 首先使用assertTrue(dish2.isPresent())
断言非空。
然后将返回的Optional
对象的内容与:
assertEquals(dish, dish2.get())
你在类 Dish 中覆盖了 equals() 吗? 如果不是,则使用 Object.equals(),并且仅当对象与其自身进行比较时才返回 true。 如果你想要一个 equals() 函数在两个不同的 Dish 对象的字段都相等时返回 true,你必须自己编写它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.