Add exhaustive unit test suite to assert the behavior of TestScheduler#triggerActions #20
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is just an exhaustive unit test to assert the side effects of
TestScheduler.triggerActions()applied onTestObserverin different orders.There are two observedOn and two subscribeOn of TestScheduler. In total, there are 24 combinations on the order when TestScheduler.triggerActions() is executed. And I named it with suffix and subscribe a simple callable with different
TestScheduler.After listing and running all 24 unit test, there are only one correct order, which is 3124, which comes to me as a surprise for two reasons.
Why am I spending my time and countless try on this topic?
TestSchedulerindeed comes in handy in asserting RxJava behaviors in a deterministic way untilObservable.subscribeOnandObservable.observeOnis introduced. As it is demonstrated in this unit test suite, there are onlyoneway to write the unit test to receive the item for this sample example. And it is mysterious enough. Imagine now we have to write test code to cover the PROD code.