{"id":18576868,"url":"https://github.com/niqdev/dagger-realm-test","last_synced_at":"2025-04-10T09:30:39.556Z","repository":{"id":87767079,"uuid":"48237219","full_name":"niqdev/dagger-realm-test","owner":"niqdev","description":"Android tests: Dagger 2 and Realm","archived":false,"fork":false,"pushed_at":"2016-07-20T06:53:13.000Z","size":153,"stargazers_count":38,"open_issues_count":1,"forks_count":8,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-03-24T19:08:16.129Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/niqdev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-12-18T13:38:48.000Z","updated_at":"2022-04-18T16:02:32.000Z","dependencies_parsed_at":null,"dependency_job_id":"7d05d447-b03f-4fa0-a43b-13b5ba6ec966","html_url":"https://github.com/niqdev/dagger-realm-test","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niqdev%2Fdagger-realm-test","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niqdev%2Fdagger-realm-test/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niqdev%2Fdagger-realm-test/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niqdev%2Fdagger-realm-test/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/niqdev","download_url":"https://codeload.github.com/niqdev/dagger-realm-test/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248191615,"owners_count":21062537,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-06T23:26:54.703Z","updated_at":"2025-04-10T09:30:39.544Z","avatar_url":"https://github.com/niqdev.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"#Dagger 2 and Realm unit test\n\n[![Build Status](https://travis-ci.org/niqdev/dagger-realm-test.svg?branch=master)](https://travis-ci.org/niqdev/dagger-realm-test)\n[![Coverage Status](https://coveralls.io/repos/github/niqdev/dagger-realm-test/badge.svg?branch=master)](https://coveralls.io/github/niqdev/dagger-realm-test?branch=master)\n\n:tada: Updated with Realm v1.x!! \u003c-- Robolectric/Realm [issue](https://github.com/robolectric/robolectric/issues/1389)\n\nSample Android application of [Dagger 2](http://google.github.io/dagger/) and [Realm](https://realm.io/docs/java/latest/) tested with [Robolectric](http://robolectric.org/), [Mockito](http://mockito.org/) and [PowerMockito](https://github.com/jayway/powermock).\n\n### Example\n```java\n@RunWith(RobolectricGradleTestRunner.class)\n@Config(application = CustomApplicationTest.class, constants = BuildConfig.class, sdk = 21)\n@PowerMockIgnore({\"org.mockito.*\"})\n@PrepareForTest({Injector.class})\npublic class MessageRepositoryTest {\n\n    @Rule\n    public PowerMockRule rule = new PowerMockRule();\n\n    @Inject\n    MessageRepository messageRepository;\n\n    @Inject\n    DatabaseRealm databaseRealm;\n\n    @Before\n    public void setupDagger() {\n        ApplicationComponentTest applicationComponentTest = DaggerApplicationComponentTest.builder()\n            .applicationContextModuleTest(new ApplicationContextModuleTest())\n            .repositoryModuleTest(new RepositoryModuleTest(false))\n            .build();\n\n        PowerMockito.mockStatic(Injector.class);\n        PowerMockito.when(Injector.getApplicationComponent()).thenReturn(applicationComponentTest);\n\n        ((ApplicationComponentTest) Injector.getApplicationComponent()).inject(this);\n    }\n\n    @Test\n    public void messageRepository_add() {\n        String MESSAGE_UUID = \"UUID\";\n        String MESSAGE_CONTENT = \"CONTENT\";\n        String MESSAGE_INFO = \"INFO\";\n        MessageModel message = new MessageModel();\n        message.setUuid(MESSAGE_UUID);\n        message.setContent(MESSAGE_CONTENT);\n        message.setInfo(MESSAGE_INFO);\n\n        when(databaseRealm.add(message)).thenReturn(message);\n\n        TestSubscriber\u003cString\u003e tester = new TestSubscriber\u003c\u003e();\n        messageRepository.add(message).subscribe(tester);\n\n        verify(databaseRealm).add(message);\n\n        tester.assertValue(MESSAGE_UUID);\n        tester.assertCompleted();\n        tester.assertNoErrors();\n    }\n\n    @Test\n    public void messageRepository_findAll() {\n        MessageModel message1 = MessageModel.newBuilder().content(\"CONTENT1\").build();\n        MessageModel message2 = MessageModel.newBuilder().content(\"CONTENT2\").build();\n        List\u003cMessageModel\u003e messages = Arrays.asList(message1, message2);\n\n        when(databaseRealm.findAll(MessageModel.class)).thenReturn(messages);\n\n        TestSubscriber\u003cList\u003cMessageModel\u003e\u003e tester = new TestSubscriber\u003c\u003e();\n        messageRepository.findAll().subscribe(tester);\n\n        tester.assertValue(messages);\n        tester.assertCompleted();\n        tester.assertNoErrors();\n    }\n\n}\n```\n\nSetup [Robolectric](http://robolectric.org/getting-started/)\n\n- select test directory\n- Build \u003e Select Build Variant\n- Test Artifact: Unit Tests\n\nfor Linux and Mac users:\n\n- Edit Configurations \u003e Working directory = $MODULE_DIR$\n\n\u003c!--\nLinks/issues\n\n- http://stackoverflow.com/questions/27036933/how-to-set-up-dagger-dependency-injection-from-scratch-in-android-project\n- https://stackoverflow.com/questions/26939340/how-do-you-override-a-module-dependency-in-a-unit-test-with-dagger-2-0/29996385#29996385\n- https://github.com/robolectric/robolectric/issues/1389\n- https://github.com/google/dagger/issues/186#issuecomment-163309550\n- https://github.com/google/dagger/issues/110\n- https://stackoverflow.com/questions/29969913/creating-test-dependencies-when-using-dagger2\n- http://stackoverflow.com/questions/29989245/android-unit-tests-with-dagger-2\n- https://stackoverflow.com/questions/26939340/how-do-you-override-a-module-dependency-in-a-unit-test-with-dagger-2-0?lq=1\n- https://github.com/realm/realm-java/blob/master/examples/unitTestExample/src/test/java/io/realm/examples/unittesting/ExampleRealmTest.java\n- https://github.com/realm/realm-java/blob/master/examples/unitTestExample/src/test/java/io/realm/examples/unittesting/ExampleActivityTest.java\n- https://github.com/robolectric/robolectric/issues/1389\n- https://github.com/realm/realm-java/issues/904\n- http://blog.sqisland.com/2015/12/mock-application-in-espresso.html\n- https://artemzin.com/blog/how-to-mock-dependencies-in-unit-integration-and-functional-tests-dagger-robolectric-instrumentation/\n\n--\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fniqdev%2Fdagger-realm-test","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fniqdev%2Fdagger-realm-test","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fniqdev%2Fdagger-realm-test/lists"}