繁体   English   中英

how Unit test methods of Kotlin class with private constructor, companion object and extending another class without mocking

[英]how Unit test methods of Kotlin class with private constructor, companion object and extending another class without mocking

我的 class 正在扩展另一个 class 并具有配套的 object 和私有构造函数。 我必须对 getLastKnownLocation() 方法进行单元测试。 我不想模拟 GpsTrackingService class 并且想在我的测试 class 中实例化它。 我该怎么做? 感谢您的帮助,提前

 class GpsTrackingService private constructor(private val context: Context, private val Snavigator: SNavigator?) : LocationListener {
    
        companion object {}
    
    getLastKnowLocation() {}
    }

您可以将构造函数设为internal ,模拟依赖项,并使用它们来实例化您的 class。

class GpsTrackingServiceTest {
   
   private lateinit var context: Context
   private lateinit var sNavigator: SNavigator
   private lateinit var trackingService: GpsTrackingService

   @Before
   fun setup() {
      context = Mockito.mock(Context::class.java)
      sNavigator = Mockito.mock(SNavigator::class.java)
      trackingService = GpsTrackingService(context, sNavigator)
   }

   @Test
   fun test_getLastKnowLocation() {
      trackingService.getLastKnowLocation()
      // do your verifications, etc
   }
}

这对我有用

class GpsTrackingServiceTest {
   
   private lateinit var mContext: Context
   private lateinit var sNavigator: SNavigator
   private lateinit var trackingService: GpsTrackingService

   @Before
   fun setup() {
      cmContext = InstrumentationRegistry.getInstrumentation().context
      sNavigator = Mockito.mock(SNavigator::class.java)
      trackingService = GpsTrackingService.getInstance(mContext, redNavigator)
   }

   @Test
   fun test_getLastKnowLocation() {
      trackingService.getLastKnowLocation()
      // do your verifications, etc
   }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM