We sometimes use the mockito rule wrapped in a Junit RuleChain and when doing so sonarcloud fails to identify the initialization of mocks and raises java:S5979.
import org.junit.Rule;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
import org.mockito.quality.Strictness;
import org.junit.rules.RuleChain;
public class SomeTest {
@Rule
public RuleChain ruleChain = RuleChain.outerRule(MockitoJUnit.testRule(this)).around(new OtherRule());
@Mock
private SomeType someMock;
@Test
public void someTest() {
// ...
}
}
@Dorian_Burihabwa The following minimal self contained code example generates a false positive on java:S5979 for me using SonarLint intellij plugin (version 6.4.1.42145) or SonarCloud
import org.junit.Assert;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExternalResource;
import org.junit.rules.RuleChain;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnit;
public class RuleChainAndMockitoRuleTest {
private class OtherRule extends ExternalResource {
}
interface AnyService {
}
@Rule
public RuleChain ruleChain = RuleChain.outerRule(MockitoJUnit.testRule(this)).around(new OtherRule());
@Mock
private AnyService mocked;
@Test
public void test() {
Assert.assertNotNull(mocked);
}
}