将NewRelic自定义参数添加到日志记录库的关键部分。 嘿,我应该添加测试以验证是否正确调用了。 编写了一些测试来验证和为NewRelic()使用ArgumentCaptor,有时它们可以工作。有时候,他们没有。使用intellij,gradle,SpringBoot(1.4.2)。
compile group: 'com.newrelic.agent.java', name: 'newrelic-api', version: '3.26.1'
testCompile group: 'org.powermock', name: 'powermock-module-junit4', version: '1.6.5'
testCompile group: 'org.powermock', name: 'powermock-api-mockito', version: '1.6.5'
随机PowerMockito.mockStatic(NewRelic.class);
无法捕获参数。
测试使用以下代码段:
@RunWith(PowerMockRunner.class)
@PrepareForTest({NewRelic.class})
public class NewRelicAddCustomParameterWrapperTest {
@Before
public void setUp() throws Exception {
PowerMockito.mockStatic(NewRelic.class);
PowerMockito.spy(NewRelic.class);
}
@Test
public void addCustomParam() throws Exception {
//GIVEN
String key = "woopsie-doo1";
String value = "tippyConue";
PowerMockito.spy(NewRelic.class);
ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class);
ArgumentCaptor<String> captor2 = ArgumentCaptor.forClass(String.class);
PowerMockito.doNothing().when(NewRelic.class, "addCustomParameter", captor.capture(), captor2.capture());
//WHEN
newRelicAddCustomParameterWrapper.addCustomParam(key, value);
//THEN
String resourceKey = captor.getValue();
'NewRelicAddCustomParameterWrapper`类是包装NewRelic调用的简单方法:
public void addCustomParam(final String key, final String value) {
// Create a component to wrapper the static NewRelic
try {
NewRelic.addCustomParameter(key, value);
} catch (Exception newRCustomException) {
newRCustomException.printStackTrace();
}
}
会发生什么症状行为:
No argument value was captured!
在以下代码行中:
String resourceKey = captor.getValue();
控制台中的错误代码段:
您可能忘记了在verify()中使用arguments.capture()... ...或者您在存根中使用了capture(),但存根方法不是 叫。请注意,建议仅将capture()与 verify()
正确捕获参数的示例: ArgumentCaptor参数= ArgumentCaptor.forClass(Person.class); verify(mock).doSomething(argument.capture()); assertEquals(“ John”,参数.getValue()。getName());
org.mockito.exceptions.base.MockitoException:没有参数值 被抓!您可能已经忘记在其中使用arguments.capture() verify()... ...或在存根但存根方法中使用了capture() 没有被调用。请注意,建议仅使用capture() 与verify()
Thread.sleep(900)
无济于事。大声笑:) Is there a conflict between PowerMockito & Mockito?
Is PowerMock better PowerMockito: which should I be using?
MockGateway
会执行类似模拟方法的操作。clean
我花了太多时间在这上面。这是重要的一段代码,需要良好的测试覆盖率。 任何想法,想法,建议如何进行。
github上的简单示例项目: CODE LINK: New Relic PowerMockito static unit test of NewRelic.addCustomParameter(key, value);