第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Android Room 測試刪除不起作用 (Java)

Android Room 測試刪除不起作用 (Java)

萬千封印 2023-08-16 09:40:53
我正在嘗試使用 android-room 對我的 DAO 進(jìn)行單元測試。我已經(jīng)編寫了一個可以正常工作的插入測試。不幸的是,刪除方法似乎不起作用。我嘗試了幾種不同的測試設(shè)置。沒有一個有效。這是 DAO:@Daopublic interface MonthlyDao {    @Insert(onConflict = OnConflictStrategy.REPLACE)    void saveAll(List<Monthly> goals);    @Insert(onConflict = OnConflictStrategy.REPLACE)    void save(Monthly goal);    @Update    void update(Monthly goal);    @Delete    void delete(Monthly goal);    @Query("SELECT * FROM Monthly")    LiveData<List<Monthly>> findAll();    @Query("SELECT * FROM monthly")    List<Monthly> findAllList();}這是每月實體:@Entitypublic class Monthly {    @PrimaryKey(autoGenerate = true)    private int monthlyId;    @TypeConverters(CalendarTypeConverter.class)    @ColumnInfo(name = "date")    private Calendar date = Calendar.getInstance();    @ColumnInfo(name = "title")    private String title;    @ColumnInfo(name = "description")    private String description;    @ColumnInfo(name = "completed")    private boolean completed;...    public int getMonthlyId() {        return monthlyId;    }    public void setMonthlyId(int monthlyId) {        this.monthlyId = monthlyId;    }這是我正在運(yùn)行的測試:@RunWith(AndroidJUnit4.class)public class MonthlyTest {    private MonthlyDao monthlyDao;    private MonthlyGoalsDatabase db;    @Before    public void createDb() {        Context context = ApplicationProvider.getApplicationContext();        db = Room.inMemoryDatabaseBuilder(context, MonthlyGoalsDatabase.class).build();        monthlyDao = db.getMonthlyDao();    }    @After    public void closeDb() throws IOException {        db.close();    }我將 UpdatedGoals 列表排除為空,但事實并非如此。仍然有我在測試時插入的目標(biāo)。
查看完整描述

1 回答

?
眼眸繁星

TA貢獻(xiàn)1873條經(jīng)驗 獲得超9個贊

注釋的方法@Delete使用實體上的主鍵來知道要從數(shù)據(jù)庫中刪除哪一行(因為可能有多行具有相同的數(shù)據(jù)但不同的鍵)。


但是,您使用的是您創(chuàng)建的初始goal對象,該對象沒有主鍵,因此不能用于指示要刪除的行。


嘗試這樣做:


monthlyDao.save(goal);

List<Monthly> goals = monthlyDao.findAllList();

Assert.assertThat(goals.get(0).getTitle(), equalTo(goal.getTitle()));

monthlyDao.delete(goals.get(0)); // <-- Delete the goal returned from the find, which will have an ID

List<Monthly> updatedGoals = monthlyDao.findAllList();

Assert.assertTrue(updatedGoals.isEmpty());

這可以很容易地清理一下,但上面的示例只更改了一行,以明確問題所在。


查看完整回答
反對 回復(fù) 2023-08-16
  • 1 回答
  • 0 關(guān)注
  • 232 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號