Skip to content

Instantly share code, notes, and snippets.

Future<Response> get(String url) async {
String wsseHeader = await generateAuthHeader();
final response = await httpClient.get(url,
headers: {
HttpHeaders.contentTypeHeader: 'application/vnd.api+json',
'Authorization': 'WSSE profile="UsernameToken"',
'X-WSSE': wsseHeader
},
);
class Calculator {
fun sum(a: Int, b: Int) = a + b
}
@HiltViewModel
class CalculatorViewModel @Inject constructor(
private val calculator: Calculator
) : ViewModel() {
...
}
@AndroidEntryPoint
class CalculatorActivity : AppCompatActivity() {
private val viewModel: CalculatorViewModel by viewModels()
...
}
@Module
@InstallIn(SingletonComponent::class)
class AppModule {
@Singleton
@Provides
fun provideCalculator(): Calculator = Calculator()
}
@Before
fun setUp() {
calculatorService = mockk<CalculatorService>()
viewModel = CalculatorViewModel(calculatorService)
}
@Test
fun test_SumReturnFromCalculator_LiveDataChanged() {
//Given
every { calculatorService.sum(a, b) } returns sum
class TestRunner : AndroidJUnitRunner() {
override fun newApplication(cl: ClassLoader?, name: String?, context: Context?): Application {
return super.newApplication(cl, HiltTestApplication::class.java.name, context)
}
}
android {
defaultConfig {
...
testInstrumentationRunner "com.duyha.hilttestingsample.TestRunner"
}
}
@HiltAndroidTest
@RunWith(AndroidJUnit4::class)
class CalculatorActivityTest {
@BindValue
@JvmField
val viewModel = mockk<CalculatorViewModel>(relaxed = true)
@get:Rule
var hiltRule = HiltAndroidRule(this)
@Test
fun test_DisplaySum_WhenSumLiveDataChange() {
//Given
val scenario = launchActivity<CalculatorActivity>()
//When
sum.postValue(10)
//Then
onView(withId(R.id.tvSum)).check(matches(withText("10")))
}