我刚刚将Intellij Idea的SonarLint插件更新为2.3.2版.Changelog表示,因为连接模式下的2.3版规则排除应该可用.
下面是我的配置,似乎已经纠正,但是,忽略的规则仍然会弹出.
我遇到了 Mockito 试图在存根时调用真实方法的问题。我认为这可能与该方法被继承有关。这是我的系统外部的组件,对此无能为力。但是让我们来看看代码
AbstractRpcClient abstractRpcClient = mock(AbstractRpcClient.class);
doNothing().when(abstractRpcClient).callOnce(anyString(), anyVararg());
Run Code Online (Sandbox Code Playgroud)
由于callOnce在其他一些对象上调用方法,我在第二行得到了 NPE。
AbstractRpcClient从另一个抽象类继承,但是这个类是本地包,所以我什至不能在我的存根中转换它。
有什么我可以做的吗?我怎样才能存根这个方法什么都不做或抛出异常而不调用真正的方法。
我是否必须在测试和覆盖方法中扩展这个类callOnce?这当然有效,但还有其他解决方案吗?
最小的例子:
package external.component;
public abstract class ClassToMock extends SuperClass {
}
abstract class SuperClass {
public void callOnce(String method, Object... params) {
throw new RuntimeException("We shouldn't be here");
}
}
Run Code Online (Sandbox Code Playgroud)
测试班
package mypackage
import static org.mockito.Matchers.anyString;
import static org.mockito.Matchers.anyVararg;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.mock;
public class Testclass {
@Test
public void test() {
external.component.ClassToMock classToMock = mock(external.component.ClassToMock.class);
doNothing().when(classToMock).callOnce(anyString(), anyVararg());
} …Run Code Online (Sandbox Code Playgroud) 有没有办法在 Logback 中参数化转换规则?我已经尝试添加子节点、附加属性,但我看不到这样做的方法。
<conversionRule conversionWord="boundedMsg" converterClass="com.package.util.logging.converters.LongMessageConverter">
Run Code Online (Sandbox Code Playgroud)
我想添加 LongMessageConverter 类将使用的参数。
我的应用程序是在 Spring Boot 上设置的,我使用的是 Sl4J。
java ×2
inheritance ×1
logback ×1
mockito ×1
slf4j ×1
sonarlint ×1
spring-boot ×1
unit-testing ×1