refactoring hemocube fragment and add tests
This commit is contained in:
@@ -1,27 +1,20 @@
|
||||
package com.example.hpostesting
|
||||
|
||||
import android.content.Context
|
||||
import android.os.Build
|
||||
import androidx.arch.core.executor.testing.InstantTaskExecutorRule
|
||||
import androidx.lifecycle.Observer
|
||||
import androidx.work.Configuration
|
||||
import androidx.work.testing.SynchronousExecutor
|
||||
import androidx.work.testing.WorkManagerTestInitHelper
|
||||
import com.example.hpostesting.data.Result
|
||||
import com.example.hpostesting.data.model.login.LoginResponse
|
||||
import com.example.hpostesting.data.repository.Repository
|
||||
import com.example.hpostesting.domain.LogFileManager
|
||||
import com.example.hpostesting.presentation.hemocube.HemoCubeViewModel
|
||||
import com.example.hpostesting.util.TestCoroutineRule
|
||||
import io.mockk.MockKAnnotations
|
||||
import io.mockk.coEvery
|
||||
import io.mockk.coVerify
|
||||
import io.mockk.every
|
||||
import io.mockk.impl.annotations.MockK
|
||||
import io.mockk.mockk
|
||||
import io.mockk.verify
|
||||
import junit.framework.TestCase
|
||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||
import kotlinx.coroutines.test.runBlockingTest
|
||||
import org.junit.After
|
||||
import org.junit.Before
|
||||
import org.junit.Rule
|
||||
@@ -29,35 +22,34 @@ import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.robolectric.RobolectricTestRunner
|
||||
import org.robolectric.annotation.Config
|
||||
import java.io.File
|
||||
|
||||
//@RunWith(RobolectricTestRunner::class)
|
||||
//@Config(manifest = Config.NONE)
|
||||
//@ExperimentalCoroutinesApi
|
||||
//class HemocubeViewModelTest {
|
||||
//
|
||||
// @get:Rule
|
||||
// val instantTaskExecutorRule = InstantTaskExecutorRule()
|
||||
//
|
||||
// @get:Rule
|
||||
// val coroutineRule = TestCoroutineRule()
|
||||
//
|
||||
// @MockK(relaxed = true)
|
||||
// lateinit var repository: Repository
|
||||
//
|
||||
// @MockK(relaxed = true)
|
||||
// lateinit var logFileManager: LogFileManager
|
||||
//
|
||||
// @MockK(relaxed = true)
|
||||
// lateinit var context: Context
|
||||
//
|
||||
// @MockK(relaxed = true)
|
||||
// lateinit var observer: Observer<Result<LoginResponse>>
|
||||
//
|
||||
// private lateinit var viewModel: HemoCubeViewModel
|
||||
//
|
||||
// @Before
|
||||
// fun setup() {
|
||||
@RunWith(RobolectricTestRunner::class)
|
||||
@Config(manifest = Config.NONE)
|
||||
@ExperimentalCoroutinesApi
|
||||
class HemocubeViewModelTest {
|
||||
|
||||
@get:Rule
|
||||
val instantTaskExecutorRule = InstantTaskExecutorRule()
|
||||
|
||||
@get:Rule
|
||||
val coroutineRule = TestCoroutineRule()
|
||||
|
||||
@MockK(relaxed = true)
|
||||
lateinit var repository: Repository
|
||||
|
||||
@MockK(relaxed = true)
|
||||
lateinit var logFileManager: LogFileManager
|
||||
|
||||
@MockK(relaxed = true)
|
||||
lateinit var context: Context
|
||||
|
||||
@MockK(relaxed = true)
|
||||
lateinit var observer: Observer<Result<LoginResponse>>
|
||||
|
||||
private lateinit var viewModel: HemoCubeViewModel
|
||||
|
||||
@Before
|
||||
fun setup() {
|
||||
// MockKAnnotations.init(this)
|
||||
//
|
||||
// val config = Configuration.Builder()
|
||||
@@ -78,13 +70,34 @@ import java.io.File
|
||||
// context
|
||||
// )
|
||||
// viewModel.loginResponse.observeForever(observer)
|
||||
// }
|
||||
//
|
||||
// @After
|
||||
// fun teardown() {
|
||||
}
|
||||
|
||||
@After
|
||||
fun teardown() {
|
||||
// viewModel.loginResponse.removeObserver(observer)
|
||||
// }
|
||||
//
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `testAddNumbers in HemocubeViewModelTest`() {
|
||||
// Create a mock of the Calculator class using Mockito-Kotlin
|
||||
val calculatorMock = mockk<Calculator>()
|
||||
|
||||
// Define the behavior of the add method on the mock
|
||||
every { calculatorMock.add(2, 3) } returns 5
|
||||
|
||||
// Create an instance of MathApplication with the mock Calculator
|
||||
val mathApplication = MathApplication(calculatorMock)
|
||||
|
||||
// Perform the test using the MathApplication
|
||||
val result = mathApplication.addNumbers(2, 3)
|
||||
|
||||
// Verify that the add method of the mock was called with the correct parameters
|
||||
verify { calculatorMock.add(2, 3) }
|
||||
|
||||
// Verify the result of the test
|
||||
TestCase.assertEquals(5, result)
|
||||
}
|
||||
|
||||
// @Test
|
||||
// fun `login() should update LiveData with success`() = coroutineRule.runBlockingTest {
|
||||
//
|
||||
@@ -124,7 +137,7 @@ import java.io.File
|
||||
// viewModel.uploadLogs()
|
||||
//
|
||||
// // Assert
|
||||
// verify { observer.onChanged(response) }
|
||||
// verify { observer.onChanged(response as Result<LoginResponse>) }
|
||||
// }
|
||||
//
|
||||
// @Test
|
||||
@@ -141,4 +154,4 @@ import java.io.File
|
||||
// // Assert
|
||||
// verify { observer.onChanged(response) }
|
||||
// }
|
||||
//}
|
||||
}
|
||||
15
app/src/test/java/com/example/hpostesting/MathApplication.kt
Normal file
15
app/src/test/java/com/example/hpostesting/MathApplication.kt
Normal file
@@ -0,0 +1,15 @@
|
||||
package com.example.hpostesting
|
||||
|
||||
|
||||
class Calculator {
|
||||
fun add(a: Int, b: Int): Int {
|
||||
return a + b
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class MathApplication(private val calculator: Calculator) {
|
||||
fun addNumbers(a: Int, b: Int): Int {
|
||||
return calculator.add(a, b)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package com.example.hpostesting
|
||||
|
||||
import io.mockk.every
|
||||
import io.mockk.mockk
|
||||
import io.mockk.verify
|
||||
import junit.framework.TestCase.assertEquals
|
||||
import org.junit.Test
|
||||
|
||||
class MathApplicationTest {
|
||||
|
||||
@Test
|
||||
fun testAddNumbers() {
|
||||
// Create a mock of the Calculator class using Mockito-Kotlin
|
||||
val calculatorMock = mockk<Calculator>()
|
||||
|
||||
// Define the behavior of the add method on the mock
|
||||
every { calculatorMock.add(2, 3) } returns 5
|
||||
|
||||
// Create an instance of MathApplication with the mock Calculator
|
||||
val mathApplication = MathApplication(calculatorMock)
|
||||
|
||||
// Perform the test using the MathApplication
|
||||
val result = mathApplication.addNumbers(2, 3)
|
||||
|
||||
// Verify that the add method of the mock was called with the correct parameters
|
||||
verify { calculatorMock.add(2, 3) }
|
||||
|
||||
// Verify the result of the test
|
||||
assertEquals(5, result)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
package com.example.hpostesting
|
||||
|
||||
import android.content.Context
|
||||
import android.net.ConnectivityManager
|
||||
import androidx.arch.core.executor.testing.InstantTaskExecutorRule
|
||||
import io.mockk.every
|
||||
import io.mockk.mockk
|
||||
import io.mockk.verify
|
||||
import junit.framework.TestCase
|
||||
import org.junit.Before
|
||||
import org.junit.Rule
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mockito.Mock
|
||||
import org.mockito.junit.MockitoJUnitRunner
|
||||
|
||||
|
||||
@RunWith(MockitoJUnitRunner::class)
|
||||
class NetworkStatusLiveDataTest {
|
||||
@get:Rule
|
||||
val instantTaskExecutorRule = InstantTaskExecutorRule()
|
||||
|
||||
@Mock
|
||||
private lateinit var mockContext: Context
|
||||
|
||||
@Mock
|
||||
private lateinit var mockConnectivityManager: ConnectivityManager
|
||||
|
||||
@Before
|
||||
fun setUp() {
|
||||
// mockContext = ApplicationProvider.getApplicationContext<Context>()
|
||||
// mockConnectivityManager = mockContext.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testAddNumbers() {
|
||||
// Create a mock of the Calculator class using Mockito-Kotlin
|
||||
val calculatorMock = mockk<Calculator>()
|
||||
|
||||
// Define the behavior of the add method on the mock
|
||||
every { calculatorMock.add(2, 3) } returns 5
|
||||
|
||||
// Create an instance of MathApplication with the mock Calculator
|
||||
val mathApplication = MathApplication(calculatorMock)
|
||||
|
||||
// Perform the test using the MathApplication
|
||||
val result = mathApplication.addNumbers(2, 3)
|
||||
|
||||
// Verify that the add method of the mock was called with the correct parameters
|
||||
verify { calculatorMock.add(2, 3) }
|
||||
|
||||
// Verify the result of the test
|
||||
TestCase.assertEquals(5, result)
|
||||
}
|
||||
|
||||
// @Test
|
||||
// fun testNetworkStatusLiveData() {
|
||||
// // Assuming mockConnectivityManager is a mocked ConnectivityManager instance
|
||||
// val mockNetwork = mock(Network::class.java)
|
||||
// val mockNetworkCapabilities = mock(NetworkCapabilities::class.java)
|
||||
//
|
||||
// // Define desired capabilities
|
||||
// `when`(mockNetworkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)).thenReturn(true)
|
||||
// `when`(mockNetworkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)).thenReturn(true)
|
||||
//
|
||||
// // Set up network to return mocked capabilities
|
||||
// `when`(mockConnectivityManager.activeNetwork).thenReturn(mockNetwork)
|
||||
// `when`(mockConnectivityManager.getNetworkCapabilities(mockNetwork)).thenReturn(mockNetworkCapabilities)
|
||||
//
|
||||
// // Act
|
||||
// val networkStatusLiveData = NetworkStatusLiveData(mockContext)
|
||||
// val isConnected = networkStatusLiveData.value
|
||||
//
|
||||
// // Assert
|
||||
// assertTrue("Network should be connected", isConnected!!)
|
||||
// }
|
||||
}
|
||||
Reference in New Issue
Block a user