Merge pull request #91 from fknives/#89-#90-fix-description-issues-in-shared-tests

#89 #90 fix description issues in shared tests
This commit is contained in:
Gergely Hegedis 2022-06-30 16:10:51 +03:00 committed by GitHub
commit 91ff86aa5b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 3 deletions

View file

@ -11,6 +11,9 @@ import org.koin.dsl.module
/** /**
* Reloads the Database Koin module, so it uses the inMemory database with the switched out Executors. * Reloads the Database Koin module, so it uses the inMemory database with the switched out Executors.
*
* This is needed so in AndroidTests not a real File based device is used.
* This speeds tests up, and isolates them better, there will be no junk in the Database file from previous tests.
*/ */
object TestDatabaseInitialization { object TestDatabaseInitialization {

View file

@ -12,7 +12,7 @@ In this testing instruction set you will learn how to write simple tests running
- We will use RuleChains to order our Test Rules. - We will use RuleChains to order our Test Rules.
## Login UI Test ## Login UI Test
Instead of writing new tests from scratch, we will modify our existing Robolectric tests so they can be run on a Real Android device as well. Instead of writing new tests from scratch, we will modify our existing Robolectric tests so they can be run on a Real Android device as well.N
For this we already have a `sharedTest` package. For this we already have a `sharedTest` package.
Our classes will be `CodeKataAuthActivitySharedTest` and `CodeKataSharedRobotTest`. Our classes will be `CodeKataAuthActivitySharedTest` and `CodeKataSharedRobotTest`.
@ -132,7 +132,7 @@ This is great if you want to have End-to-End tests that follow each other, but s
We will check if koin is initialized, if it isn't then we simply initialize it: We will check if koin is initialized, if it isn't then we simply initialize it:
```kotlin ```kotlin
... ...
TestDatabaseInitialization.overwriteDatabaseInitialization(dispatcher) Intents.init()
if (GlobalContext.getOrNull() == null) { if (GlobalContext.getOrNull() == null) {
val application = ApplicationProvider.getApplicationContext<TestShowcaseApplication>() val application = ApplicationProvider.getApplicationContext<TestShowcaseApplication>()
val baseUrl = BaseUrl(BuildConfig.BASE_URL) val baseUrl = BaseUrl(BuildConfig.BASE_URL)
@ -140,7 +140,8 @@ if (GlobalContext.getOrNull() == null) {
androidContext(application) androidContext(application)
modules(createAppModules(baseUrl)) modules(createAppModules(baseUrl))
} }
} } // needs to be before the Database overwriting
val dispatcher = StandardTestDispatcher()
... ...
``` ```
@ -346,6 +347,10 @@ You might be thinking, then why did we go through how to do these stuff manually
All in all, it is a good tool to get started on your test, but you probably still need to do manual modifications on it. So personally I would suggest them for bigger tests, which would take too much time manually, and then do the adjustments while running the tests. All in all, it is a good tool to get started on your test, but you probably still need to do manual modifications on it. So personally I would suggest them for bigger tests, which would take too much time manually, and then do the adjustments while running the tests.
> **Note: If you try it now, it will state that it is not compatible with Compose Projects.**
> So first switch to branch `TEST-HERE-Record-Espresso-Test` or commit `694d1bf0e71e40e80de849a3a6bb5e8a3430e348`.
> This is the last commit that still had no compose in it.
Okay, but how do we do it? As it's written on the site, we select `Run > Record Espresso Test`. Okay, but how do we do it? As it's written on the site, we select `Run > Record Espresso Test`.
This will start the application on your device and you can do interactions with it. Such as writing into a text input. This will start the application on your device and you can do interactions with it. Such as writing into a text input.