Creating a SonarQube custom plugin for Kotlin

In Android we decided that we want to implement a unit test performance monitor. The reason for it is that sometimes some unit tests would execute in more than 1 second and it was all because we would use the Schedulers.trampoline() RxJava scheduler instead of the TestScheduler which is part of the RX package.

Continue reading “Creating a SonarQube custom plugin for Kotlin”

The difference between a spec and a test (Behaviour Driven Development)

What is a spec

There was a time where I saw some tests which my colleagues made where the file name in the test folder would be: “”. So “spec” is short of specification and it is a totally different way of how we think  about tests.

Continue reading “The difference between a spec and a test (Behaviour Driven Development)”

Mockito anyString() vs any() – null handling

Sometimes, when I mock a method in Mockito, I used anyString instead of any and I get into a mess and my test fails. Why?

given(mUserRepo.getUser(anyString(). any())).willReturn(new User());

And what will happen if


UserRepo is called with null? Well, the matcher doesn’t work and the test fails. anyString() does not work with null values. If you pass null to a mocked service then use any() as a matcher.

Mockito verify input parameter was called with a given value

Edit 23.04.2018
According to this issue, Mockito cannot capture var-args still.

There is a very easy way to verify a method has been called with the right parameter in Mockito. All you need to do is use captors, to capture the actual argument. Here is how you can use them:

ArgumentCaptor argument = ArgumentCaptor.forClass(RuleEntity.class);

Simple it is, just a quick reminder for starters.