小编Mic*_*son的帖子

使用PowerMock和Mockito模拟Logger和LoggerFactory

我有以下Logger我想模拟,但验证日志条目被调用,而不是内容.

private static Logger logger = 
        LoggerFactory.getLogger(GoodbyeController.class);
Run Code Online (Sandbox Code Playgroud)

我想模拟用于LoggerFactory.getLogger()的任何类,但我无法找到如何做到这一点.这是我到目前为止所得到的:

@Before
public void performBeforeEachTest() {
    PowerMockito.mockStatic(LoggerFactory.class);
    when(LoggerFactory.getLogger(GoodbyeController.class)).
        thenReturn(loggerMock);

    when(loggerMock.isDebugEnabled()).thenReturn(true);
    doNothing().when(loggerMock).error(any(String.class));

    ...
}
Run Code Online (Sandbox Code Playgroud)

我想知道:

  1. 我可以模拟静态LoggerFactory.getLogger()以适用于任何类吗?
  2. 我只能似乎运行when(loggerMock.isDebugEnabled()).thenReturn(true);@Before,因此我似乎无法改变每个方法的特点.有没有解决的办法?

编辑发现:

我以为我已经尝试了这个并且它没有用:

 when(LoggerFactory.getLogger(any(Class.class))).thenReturn(loggerMock);
Run Code Online (Sandbox Code Playgroud)

但是,谢谢你,因为它确实有效.

但是我尝试了无数的变化:

when(loggerMock.isDebugEnabled()).thenReturn(true);
Run Code Online (Sandbox Code Playgroud)

我不能让loggerMock改变它的行为,@Before但这只发生在Coburtura上.使用Clover,覆盖率显示为100%,但仍然存在问题.

我有这个简单的课程:

public ExampleService{
    private static final Logger logger =
            LoggerFactory.getLogger(ExampleService.class);

    public String getMessage() {        
    if(logger.isDebugEnabled()){
        logger.debug("isDebugEnabled");
        logger.debug("isDebugEnabled");
    }
    return "Hello world!";
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

然后我有这个测试:

@RunWith(PowerMockRunner.class)
@PrepareForTest({LoggerFactory.class})
public class ExampleServiceTests {

    @Mock
    private Logger loggerMock;
    private ExampleServiceservice = new ExampleService();

    @Before
    public …
Run Code Online (Sandbox Code Playgroud)

java junit slf4j mockito powermock

56
推荐指数
3
解决办法
9万
查看次数

找不到[简单类型,类com.comcast.ivr.core.domain.AutoHandlingSlotKey]类型的(Map)密钥反序列化器

我有一个具有Map的域对象:

private Map<AutoHandlingSlotKey, LinkedHashSet<AutoFunction>> autoHandling;
Run Code Online (Sandbox Code Playgroud)

当我序列化对象时,我得到了这个:

"autoHandling" : [ "java.util.HashMap", {
} ],
Run Code Online (Sandbox Code Playgroud)

这个Map的关键是一个自定义对象:

public class AutoHandlingSlotKey implements Serializable {
    private FunctionalArea slot; // ENUM
    private String returnView;   // ENUM
Run Code Online (Sandbox Code Playgroud)

所以,我不确定如何纠正我在反序列化对象时遇到的这个问题:

org.codehaus.jackson.map.JsonMappingException: Can not find a (Map) Key deserializer for type [simple type, class com.comcast.ivr.core.domain.AutoHandlingSlotKey]
Run Code Online (Sandbox Code Playgroud)

如果我没有访问域对象进行修改,有人可以帮助我理解如何纠正这个问题吗?

java json jackson deserialization

41
推荐指数
2
解决办法
4万
查看次数

导出VisualVM应用程序配置,然后导入

我正在从VisualVM 1.3.2迁移到1.3.3,并希望将我设置的所有远程服务器和应用程序移动到这个新安装中.

我查看了%HOMEPATH%\ Application Data.visualvm\1.3.2并查看了模块和首选项的配置,但与我设置的应用程序无关.

请帮忙,因为我需要配置超过150台服务器.

visualvm jvisualvm

5
推荐指数
1
解决办法
3927
查看次数

让ANSICON在Windows 7 Enterprise 64位上运行的问题

我一直试图让1.50或1.40 ANSICON(https://github.com/adoxa/ansicon)工作,看了很多关于如何安装这个的页面:http: //blog.mmediasys.com/2010/ 11/24/we-all-love-colors / http://carol-nichols.com/2011/03/the-system-cannot-find-the-path-specified/

等等....

所以,我将我的AutoRun设置为"C:\ usr\bin\ansi140\x64\ansicon.exe"-p,我也测试了150但是没有变化.

我的整个团队都没有这个问题,但是我无法解决这个问题.我仍然在命令提示符下得到乱码垃圾:

  Scenario: Residential caller chooses to hear payment locations closest to home and there are 3 locations available which are in a 25 miles radius.?[90m #
 features\payment_locations.feature:5?[0m
    ?[32mGiven the call flow is '?[32m?[1mDivisional?[0m?[0m?[32m'?[90m
                          # features/step_definitions/common_steps.rb:5?[0m?[0m
    ?[32mAnd the ani is '?[32m?[1m6101234572?[0m?[0m?[32m'?[90m
                          # features/step_definitions/common_steps.rb:9?[0m?[0m
    ?[32mAnd the dnis is '?[32m?[1m9?[0m?[0m?[32m'?[90m
                          # features/step_definitions/common_steps.rb:13?[0m?[0m
    ?[31mWhen the call is started?[90m
    # features/step_definitions/common_steps.rb:17?[0m?[0m
?[31m      Connection refused - Connection refused (Errno::ECONNREFUSED)?[0m
?[31m      org/jruby/ext/socket/RubyTCPSocket.java:121:in `initialize'?[0m
?[31m      org/jruby/RubyIO.java:864:in `new'?[0m …
Run Code Online (Sandbox Code Playgroud)

cmd jruby ansi cucumber

5
推荐指数
1
解决办法
1万
查看次数

用Gradle运行eclipse Jetty 9

使用Gradle帮助运行Jetty 9

我已经看到了如何如何运行Jetty -7-with-specified-war-with-groovy-gradlesetting_up_embedded_jetty_8_and_spring_mvc_with_maven上运行Jetty的引用

但我想在Gradle中运行新的Eclipse Jetty 9.

我试过这个:

task jetty8Run(type: JavaExec, dependsOn: assemble) {
    main = "org.eclipse.jetty.server.Server"
    args = ["--port", 8080, "--stop-port", 9876, "--stop-key", 'shutterdown', war.archivePath]
    classpath configurations.jetty8
}
Run Code Online (Sandbox Code Playgroud)

我使用它作为依赖项:

jettyEclipse "org.eclipse.jetty:jetty-server:$jetty9Version"
jettyEclipse "org.eclipse.jetty:jetty-servlet:$jetty9Version"
jettyEclipse "org.eclipse.jetty:jetty-webapp:$jetty9Version"
jettyEclipse "org.eclipse.jetty:jetty-servlets:$jetty9Version"
jettyEclipse "org.eclipse.jetty:jetty-jsp:$jetty9Version"
jettyEclipse "javax.servlet:jstl:1.2"
Run Code Online (Sandbox Code Playgroud)

在我的gradle.properties中:

jetty9Version: 9.0.0.M0
Run Code Online (Sandbox Code Playgroud)

但是当我跑步时,我收到以下消息

An attempt to initialize for well behaving parent process finished.
Run Code Online (Sandbox Code Playgroud)

这是完整的调试堆栈跟踪:

    14:22:16.699 [INFO] [org.gradle.process.internal.DefaultExecHandle] Starting process 'command 'C:\usr\bin\Java\jdk1.7\bin\java.exe''. Working directory: C:\usr\git_workspaces\oxygen\code_wash Command: C:\usr\bin\Java\jdk1.7\bin\java.exe -Dfile.encoding=windows-1252 -cp C:\Users\mknuts6173c\.gradle\caches\artifacts-14\filestore\org.mortbay.jetty\jetty-runner\8.1.5.v20120716\jar\2f8a590e1dcdf75e40cabfc0803c3712b7f04360\jetty-runner-8.1.5.v20120716.jar;C:\Users\mknuts6173c\.gradle\caches\artifacts-14\filestore\org.eclipse.jetty\jetty-server\9.0.0.M0\jar\7c6ea0dc0230fba0fe0e2a37490558477b9833c6\jetty-server-9.0.0.M0.jar;C:\Users\mknuts6173c\.gradle\caches\artifacts-14\filestore\org.eclipse.jetty\jetty-servlet\9.0.0.M0\jar\5bfecce207651c0f7861255061df32204e1f4ba0\jetty-servlet-9.0.0.M0.jar;C:\Users\mknuts6173c\.gradle\caches\artifacts-14\filestore\org.eclipse.jetty\jetty-webapp\9.0.0.M0\jar\b67fc43d6949e1bf66eb479fba3a9b335fa9dd0e\jetty-webapp-9.0.0.M0.jar;C:\Users\mknuts6173c\.gradle\caches\artifacts-14\filestore\org.eclipse.jetty\jetty-servlets\9.0.0.M0\jar\1cb5a7222ebec54e5c5b089d5c757ec6ac6506a0\jetty-servlets-9.0.0.M0.jar;C:\Users\mknuts6173c\.gradle\caches\artifacts-14\filestore\org.eclipse.jetty\jetty-jsp\9.0.0.M0\jar\5120a9a20405a286d158825257d50812d63493d4\jetty-jsp-9.0.0.M0.jar;C:\Users\mknuts6173c\.m2\repository\javax\servlet\jstl\1.2\jstl-1.2.jar;C:\Users\mknuts6173c\.gradle\caches\artifacts-14\filestore\org.mortbay.jetty\servlet-api\3.0.pre4\jar\d5611e63cefe84a858bb46a4cb1249dcb7ddb830\servlet-api-3.0.pre4.jar;C:\Users\mknuts6173c\.gradle\caches\artifacts-14\filestore\org.eclipse.jetty.orbit\javax.servlet\3.0.0.v201112011016\orbit\aaaa85845fb5c59da00193f06b8e5278d8bf3f8\javax.servlet-3.0.0.v201112011016.jar;C:\Users\mknuts6173c\.gradle\caches\artifacts-14\filestore\org.eclipse.jetty.orbit\javax.servlet.jsp\2.2.0.v201112011158\orbit\80b4ffe7c26ee97313bea2ddda5835fd38812ee4\javax.servlet.jsp-2.2.0.v201112011158.jar;C:\Users\mknuts6173c\.gradle\caches\artifacts-14\filestore\org.eclipse.jetty.orbit\org.apache.jasper.glassfish\2.2.2.v201112011158\orbit\3945afe6a042228a92da320aec3fa1bc1308183b\org.apache.jasper.glassfish-2.2.2.v201112011158.jar;C:\Users\mknuts6173c\.gradle\caches\artifacts-14\filestore\org.eclipse.jetty.orbit\javax.servlet.jsp.jstl\1.2.0.v201105211821\orbit\db594f1c8fc00d536f6d135bd7f8a9a99a6b8eea\javax.servlet.jsp.jstl-1.2.0.v201105211821.jar;C:\Users\mknuts6173c\.gradle\caches\artifacts-14\filestore\org.eclipse.jetty.orbit\javax.el\2.2.0.v201108011116\orbit\ec8944c11833d84b0283a5afbad0fafb264f86a9\javax.el-2.2.0.v201108011116.jar;C:\Users\mknuts6173c\.gradle\caches\artifacts-14\filestore\org.eclipse.jetty.orbit\com.sun.el\2.2.0.v201108011116\orbit\15f7774c3fa514835a371f47c152317704ea411a\com.sun.el-2.2.0.v201108011116.jar;C:\Users\mknuts6173c\.gradle\caches\artifacts-14\filestore\org.eclipse.jetty.orbit\org.eclipse.jdt.core\3.7.1\orbit\5b79bfee0852ca685e33cab74496fa3400271b5b\org.eclipse.jdt.core-3.7.1.jar;C:\Users\mknuts6173c\.gradle\caches\artifacts-14\filestore\org.eclipse.jetty\jetty-continuation\9.0.0.M0\jar\3031a06840cee834b640ae3d145044fb07aebdc4\jetty-continuation-9.0.0.M0.jar;C:\Users\mknuts6173c\.gradle\caches\artifacts-14\filestore\org.eclipse.jetty\jetty-util\9.0.0.M0\jar\7149f92459b45f91b5a0487a5edc300764392ee7\jetty-util-9.0.0.M0.jar;C:\Users\mknuts6173c\.gradle\caches\artifacts-14\filestore\org.eclipse.jetty\jetty-io\9.0.0.M0\jar\8dcc24862d1832e0035f893e227d38b656ecef49\jetty-io-9.0.0.M0.jar;C:\Users\mknuts6173c\.gradle\caches\artifacts-14\filestore\org.eclipse.jetty\jetty-http\9.0.0.M0\jar\c0a5dc125b94ebc049f60f66b5ce8b17a0d9d917\jetty-http-9.0.0.M0.jar;C:\Users\mknuts6173c\.gradle\caches\artifacts-14\filestore\org.eclipse.jetty\jetty-security\9.0.0.M0\jar\b18d3938499c88109283007657e4d89ffcc8aff3\jetty-security-9.0.0.M0.jar;C:\Users\mknuts6173c\.gradle\caches\artifacts-14\filestore\org.eclipse.jetty\jetty-xml\9.0.0.M0\jar\5421375311559e23bc77d1e65624f13406018467\jetty-xml-9.0.0.M0.jar;C:\Users\mknuts6173c\.gradle\caches\artifacts-14\filestore\org.eclipse.jetty.orbit\javax.activation\1.1.0.v201105071233\orbit\b394a9fbf664ca835452b3ced452710bcf79fd81\javax.activation-1.1.0.v201105071233.jar;C:\Users\mknuts6173c\.gradle\caches\artifacts-14\filestore\org.eclipse.jetty.orbit\javax.mail.glassfish\1.4.1.v201005082020\orbit\b707c39fc080529c4a9ffc1df4eac58421133aaf\javax.mail.glassfish-1.4.1.v201005082020.jar;C:\Users\mknuts6173c\.gradle\caches\artifacts-14\filestore\org.eclipse.jetty\jetty-jndi\8.1.5.v20120716\jar\f0c40a2e62bf4b78a8c3a34cd8c0a8250b8321c0\jetty-jndi-8.1.5.v20120716.jar;C:\Users\mknuts6173c\.gradle\caches\artifacts-14\filestore\org.eclipse.jetty.orbit\javax.transaction\1.1.1.v201105210645\orbit\68e61aa115bbff4e1e2ae4b16feb27d9f805eb6\javax.transaction-1.1.1.v201105210645.jar;C:\Users\mknuts6173c\.gradle\caches\artifacts-14\filestore\org.eclipse.jetty\jetty-plus\8.1.5.v20120716\jar\d901ed553709d53b2fa72ade6a06f8bef82f29f5\jetty-plus-8.1.5.v20120716.jar;C:\Users\mknuts6173c\.gradle\caches\artifacts-14\filestore\org.eclipse.jetty.orbit\javax.annotation\1.1.0.v201108011116\orbit\964b4bd5e4f40d6497fd302e2e66c4a4257138b3\javax.annotation-1.1.0.v201108011116.jar;C:\Users\mknuts6173c\.gradle\caches\artifacts-14\filestore\org.eclipse.jetty.orbit\org.objectweb.asm\3.1.0.v200803061910\orbit\bf952ae43613f460f11ce5f8727cc9e4a7f8d33d\org.objectweb.asm-3.1.0.v200803061910.jar;C:\Users\mknuts6173c\.gradle\caches\artifacts-14\filestore\org.eclipse.jetty\jetty-annotations\8.1.5.v20120716\jar\aee87dde17b6d6fe18a3bab3f3fc4ae40356ae94\jetty-annotations-8.1.5.v20120716.jar;C:\Users\mknuts6173c\.gradle\caches\artifacts-14\filestore\org.eclipse.jetty.orbit\org.apache.taglibs.standard.glassfish\1.2.0.v201112081803\orbit\2c4baa72af1d3aae3a1e029d4f8ca07498dabbe0\org.apache.taglibs.standard.glassfish-1.2.0.v201112081803.jar org.eclipse.jetty.server.Server …
Run Code Online (Sandbox Code Playgroud)

jetty gradle

5
推荐指数
2
解决办法
7063
查看次数

在Yaml中将debug设置为true而不是@EnableWebSecurity(debug = true)

我没有使用Spring Boot,但是我希望能够使用YAML打开/关闭调试,例如:

debug: true
Run Code Online (Sandbox Code Playgroud)

代替:

@EnableWebSecurity(debug = true)
Run Code Online (Sandbox Code Playgroud)

spring spring-security

3
推荐指数
1
解决办法
420
查看次数

什么条件会阻止JVM运行FULL Garbage Collection?

当CPU处于5%到8%的负载时,有什么条件会阻止JVM运行FULL Garbage Collection?

我看到一个持续浅的GC循环,但无法调整JVM以运行FULL GC.

我在哪里可以找到JVM说"我忙得跑"的条件.

java garbage-collection jvm

2
推荐指数
1
解决办法
1448
查看次数

我想知道是否可以创建一个强制执行特定返回类型的Java Annotation?

我想知道是否可以创建一个Annotation强制执行特定返回类型的操作?

我想要的是一种创建Annotation和使用它的方法:

@MarkerAnnotationForcingStringReturnType
public String someWebflowMethod(...){
    ...
    return "someString";
}
Run Code Online (Sandbox Code Playgroud)

然后我可以拥有我想要的任何方法名称,但它必须返回,String例如.

java annotations

0
推荐指数
1
解决办法
171
查看次数