簡體   English   中英

JUnit 如何在 Optional 和對象上斷言 True/Equals

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM