我们正在使用Java插件3.14运行Sonarqube 5.5并通过sonar-maven-plugin版本3.0.2进行分析,调用“mvn clean deploy sonar:sonar”。
我们仍然违反了“在这个测试用例中添加至少一个断言”关于缺少断言的问题当测试代码包含如下内容时。
import static org.hamcrest.Matchers.hasSize;
import static org.junit.Assert.assertThat;
[...]
@Test
public void testByClassicCompare() throws InvalidPropertiesFormatException {
final CompareFilter compareFilter = new CompareFilter("gid", 333, Operation.LT);
assertThat(findAll(compareFilter), hasSize(1));
}
findAll()是测试类中的一个方法。它只是调用一些hibernate finder并返回一个对象集合:
protected Collection<MyObject> findAll(final HbnFilter filter)
更新: 当我们将断言更改为以下内容时,声纳会识别断言。
assertThat(findAll(compareFilter).size(), eq(1));
答案 0 :(得分:0)
这里的根本原因是使用JUnit的assertThat方法:
import static org.junit.Assert.assertThat;
而不是Hamcrest的一个:
import static org.hamcrest.MatcherAssert.assertThat;