w DPSPVUJOFUFTU w FUD DPNNPO5FTUͱ+7.5FTUͱͷҧ͍ // 🙅 @Rule @JvmField val rule = SomeTestRule() // 🙅 @MockK lateinit var mock: SomeInterface @Test fun test() { // 🙅 every { mock.doSomething() } just Runs doTest() // 🙅 verify { mock.doSomething() } }
class MyTest1 { lateinit var db: VisitAppDb @BeforeTest fun setup() { db = VisitAppDb(testSqlDriver()) } @AfterTest fun tearDown() { db.clean() } } class MyTest2 { lateinit var db: VisitAppDb @BeforeTest fun setup() { db = VisitAppDb(testSqlDriver()) } @AfterTest fun tearDown() { db.clean() } } class MyTest3 { lateinit var db: VisitAppDb @BeforeTest fun setup() { db = VisitAppDb(testSqlDriver()) } @AfterTest fun tearDown() { db.clean() } } class MyTest4… { lateinit var db: Visi @BeforeTest fun setup db = VisitAppDb(t } @AfterTest fun tearDo db.clean() } }
Unit fun onAfterTest() = Unit } class TestRules(vararg testRules: TestRule) : List<TestRule> by testRules.toList() interface HasTestRules { val testRules: TestRules @BeforeTest fun setupTestRules() { testRules.forEach { it.onBeforeTest() } } @AfterTest fun tearDownTestRules() { testRules.forEach { it.onAfterTest() } } }
Unit fun onAfterTest() = Unit } class TestRules(vararg testRules: TestRule) : List<TestRule> by testRules.toList() interface HasTestRules { val testRules: TestRules @BeforeTest fun setupTestRules() { testRules.forEach { it.onBeforeTest() } } @AfterTest fun tearDownTestRules() { testRules.forEach { it.onAfterTest() } } } ϧʔϧΛ࡞͢Δʹ5FTU3VMFΛ࣮
lateinit var sqlDriver: SqlDriver lateinit var db: VisitAppDb private set override fun onBeforeTest() { sqlDriver = testSqlDriver() db = VisitAppDb(driver = sqlDriver) } override fun onAfterTest() { sqlDriver.close() } } class MyTest : HasTestRules { val dbTestRule = DbTestRule() override val testRules = TestRules(dbTestRule) @Test fun test() { dbTestRule.db.userQueries.insertOrReplace(User()) val all = dbTestRule.db.userQueries.selectAll().executeAsList() assertEquals(1, all.size) } }
lateinit var sqlDriver: SqlDriver lateinit var db: VisitAppDb private set override fun onBeforeTest() { sqlDriver = testSqlDriver() db = VisitAppDb(driver = sqlDriver) } override fun onAfterTest() { sqlDriver.close() } } class MyTest : HasTestRules { val dbTestRule = DbTestRule() override val testRules = TestRules(dbTestRule) @Test fun test() { dbTestRule.db.userQueries.insertOrReplace(User()) val all = dbTestRule.db.userQueries.selectAll().executeAsList() assertEquals(1, all.size) } } 5FTU3VMFΛ࣮ͯ͠#FGPSF"GUFSΛهड़ UFTU4RM%SJWFS ͕ຖճ%#ΫϦΞ͍ͯ͠Δ
lateinit var sqlDriver: SqlDriver lateinit var db: VisitAppDb private set override fun onBeforeTest() { sqlDriver = testSqlDriver() db = VisitAppDb(driver = sqlDriver) } override fun onAfterTest() { sqlDriver.close() } } class MyTest : HasTestRules { val dbTestRule = DbTestRule() override val testRules = TestRules(dbTestRule) @Test fun test() { dbTestRule.db.userQueries.insertOrReplace(User()) val all = dbTestRule.db.userQueries.selectAll().executeAsList() assertEquals(1, all.size) } } 5FTUΫϥεʹ)BT5FTU3VMFTΛ࣮
lateinit var sqlDriver: SqlDriver lateinit var db: VisitAppDb private set override fun onBeforeTest() { sqlDriver = testSqlDriver() db = VisitAppDb(driver = sqlDriver) } override fun onAfterTest() { sqlDriver.close() } } class MyTest : HasTestRules { val dbTestRule = DbTestRule() override val testRules = TestRules(dbTestRule) @Test fun test() { dbTestRule.db.userQueries.insertOrReplace(User()) val all = dbTestRule.db.userQueries.selectAll().executeAsList() assertEquals(1, all.size) } } ͍͍ͨ5FTU3VMFΛࢦఆ
lateinit var sqlDriver: SqlDriver lateinit var db: VisitAppDb private set override fun onBeforeTest() { sqlDriver = testSqlDriver() db = VisitAppDb(driver = sqlDriver) } override fun onAfterTest() { sqlDriver.close() } } class MyTest : HasTestRules { val dbTestRule = DbTestRule() override val testRules = TestRules(dbTestRule) @Test fun test() { dbTestRule.db.userQueries.insertOrReplace(User(userId = 1, name = "Foo")) val all = dbTestRule.db.userQueries.selectAll().executeAsList() assertEquals(1, all.size) } } !#FGPSF5FTU!"GUFS5FTUΛॻ͔ͳͯ͘Α͘ͳΔ
} class ApiClientImpl : ApiClient { override fun createUser(): User { // ࣮ࡍ௨৴͢Δ return User() } } class UserRepository(private val apiClient: ApiClient) { fun create(): User { return apiClient.createUser() } } "QJ$MJFOUͱ͍͏JOUFSGBDFʹ͢Δ
} class ApiClientImpl : ApiClient { override fun createUser(): User { // ࣮ࡍ௨৴͢Δ return User() } } class UserRepository(private val apiClient: ApiClient) { fun create(): User { return apiClient.createUser() } } JOUFSGBDFΛ࣮ͨ͠*NQMΫϥεʹ͢Δ
} class ApiClientImpl : ApiClient { override fun createUser(): User { // ࣮ࡍ௨৴͢Δ return User() } } class UserRepository(private val apiClient: ApiClient) { fun create(): User { return apiClient.createUser() } } JOUFSGBDFΛೖͯ͠JOUFSGBDFʹґଘ͢Δ