質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
ユニットテスト

ユニットテストは、システムのテスト手法の一つで、個々のモジュールを対象としたテストの事を指します。対象のモジュールが要求や性能を満たしているか確認する為に実行します。

例外処理

例外処理(Exception handling)とは、プログラム実行中に異常が発生した場合、通常フローから外れ、例外として別の処理を行うようにデザインされたプログラミング言語構造です。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Q&A

1回答

3243閲覧

ユニットテストのTimeoutExceptionの発生させ方について

退会済みユーザー

退会済みユーザー

総合スコア0

ユニットテスト

ユニットテストは、システムのテスト手法の一つで、個々のモジュールを対象としたテストの事を指します。対象のモジュールが要求や性能を満たしているか確認する為に実行します。

例外処理

例外処理(Exception handling)とは、プログラム実行中に異常が発生した場合、通常フローから外れ、例外として別の処理を行うようにデザインされたプログラミング言語構造です。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

0グッド

0クリップ

投稿2016/09/20 07:30

編集2022/01/12 10:55

現在Android Studioにてユニットテストを書いています。
そこでAPIとの連携でTimeoutExceptionを発生させようと考えています。
タイムアウト等の例外が発生するとDBからデータを取得するようなものです。
現在のコードは以下のような感じになっています。

kotlin:SampleDataStore.kt

1class Sample @Inject constructor ( 2 private val sampleNet: SampleNet, 3 private val sampleDatabase: SampleDatabase 4) { 5 fun sampleEntity(sampleId: String): Observable<SampleEntity> { 6 return sampleNet.getEntity(sampleId) 7 .doOnNext { samplesEntity -> 8 sampleDatabase.update(samplesEntity) 9 } 10 .onErrorResumeNext { e -> 11 sampleDatabase.getEntity(sampleId) 12 } 13 } 14}

sampleEntity メソッドをテスト対象にしており分岐網羅をするために行っております。

また、 .doOnNext につきましては以下のようにするとテストができました。
もし間違っていれば合わせてご指摘頂ければと思います。

kotlin:SampleTest.kt

1@RunWith(AndroidJUnit4::class) 2class TitlesDataStoreTest() { 3 @Test 4 fun testSampleEntityDoOnNext() { 5 Assert.assertThat(samplesDataStore.sampleEntity(samplesEntity.sampleId).toBlocking().single(), instanceOf(SamplesEntity::class.java)) 6 } 7}

.onErrorResumeNext を通らせるものに関して詳細にご説明くださると助かります。
また、当方はAndroid開発を始めたばかりなので可能であればサンプルコードをつけて頂ければ幸いです。

どうぞ、よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

Mockitoなどのモックライブラリを利用してみてはいかがでしょうか。

[追記]
具体的にフレームワーク名も出したので自力でも調べられると思いますが、ちょっと回答が乱暴すぎた気がしますので、補足情報を追加します。(と言ってもリンクの紹介だけですが)

以下のサイトを参考にすればなんとなく雰囲気がわかると思います。

Mockitoノススメ

Unit tests with Mockito

投稿2016/09/20 07:35

編集2016/09/20 07:44
carimatics

総合スコア740

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/09/21 04:31 編集

org.mockito.exceptions.base.MockitoException: Cannot mock/spy class com.example.Sample.data.repository.datasource.SampleDataStore Mockito cannot mock/spy following: - final classes - anonymous classes - primitive types 作り方が違っているのかわからないですが、他の方法を探ってみます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問