Resolving SonarQube Rule S2699 with Karibu Testing Assertions 


I’m using Karibu Testing for testing my Vaadin applications which work perfectly. But recently, I encountered a problem when I analyzed my code with n. Karibu Testing’s assertion methods are not recognized by SonarQube.

The Problem

The image below shows the problem:

As you can see, there is an _assert() method call, but SonarQube does not know about Karibu Testing.

By default, SonarQube knows these testing frameworks:

  • AssertJ
  • Awaitility
  • EasyMock
  • Eclipse Vert.x
  • Fest 1.x and 2.x
  • Hamcrest
  • JMock
  • JMockit
  • JUnit
  • Mockito
  • Rest-assured 2.x, 3.x and 4.x
  • RxJava 1.x and 2.x
  • Selenide
  • Spring’s org.springframework.test.web.servlet.ResultActions.andExpect() and org.springframework.test.web.servlet.ResultActions.andExpectAll()
  • Truth Framework
  • WireMock

But how can we configure SonarQube to recognize Karibu Testing?

The Solution

The first thing to do is to create a custom Quality Profile. The easiest way is to copy one of the predefined profiles:

Then we need to configure rule S2699. Simply search for it in the rules view:

Then scroll down to Quality Profiles and hit “Change”:

There we have to configure the fully qualified method name. We can use wildcards to add all assert methods using com.github.mvysny.kaributesting.v10.LocatorJ#_assert*

After creating the Quality Profile we have to activate it on our project:

That’s it! When we analyze our project the next time the error is gone.

Related Posts

Simon Martinelli
Follow Me