小编nut*_*ter的帖子

用于单元测试的 Mock Room 数据库

我正在尝试为我的业务逻辑进行一些单元测试。

数据被读取和写入 Room 数据库,因此逻辑取决于我的数据库中的内容。

我可以轻松buildInMemoryDatabase测试所有逻辑,但使用速度较慢且需要连接设备的仪器测试。

我只想在RoomRepository用其他一些Repository接口实现替换我的地方运行单元测试

class RoomRepository(
    private val database: RoomDatabase //actual room database
): Repository {

    override fun getFooByType(type: Int): Maybe<List<Item>> {
        return database.fooDao()
            .getFooByType(type)
            .map { names ->
                names.map { name -> Item(name) }
            }
            .subscribeOn(Schedulers.io())
    }
}
Run Code Online (Sandbox Code Playgroud)

也许有一种方法可以在主机上运行 Room sqlite?

也许还有另一种解决方案?

android unit-testing android-room

8
推荐指数
2
解决办法
8221
查看次数

即使在 onCreate 方法之后设置了 TextWatcher,也会在orientationChange 上触发 OnTextChanged

我一直在尝试使用 EditText 获得特定行为。这是我启用旋转的简单活动。当我输入一些文本时, onTextChanged方法被触发。

当我旋转手机,这种方法不应该被触发,bacause的文字,这是保存在onInstanceState已被设置为EditTextonCreate法。

但是,当我将手机旋转回原来的方向时,方法再次触发!请参阅本文末尾的 logcat。

这是来自新创建的 Android Studio 项目的复制和粘贴代码。

public class MainActivity extends AppCompatActivity {

    EditText editText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        editText = (EditText) findViewById(R.id.search_query);
    }

    @Override
    protected void onPostCreate(@Nullable Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);
        editText.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

            }

            @Override
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                Log.d("MainActivity", "charSequence:" + charSequence);
            } …
Run Code Online (Sandbox Code Playgroud)

android

6
推荐指数
1
解决办法
1348
查看次数

检查集合是否只有一个元素的好方法

有没有办法检查我的集合是否只有一个元素?

if (myCollection.size == 1){

}
Run Code Online (Sandbox Code Playgroud)

就像是

if (myCollection.isSingle()){

}
Run Code Online (Sandbox Code Playgroud)

UPD:我喜欢isSingle()提议的答案中的命名。

谢谢

kotlin

2
推荐指数
1
解决办法
2633
查看次数

标签 统计

android ×2

android-room ×1

kotlin ×1

unit-testing ×1