小编Vik*_*dor的帖子

Mockito - 参数匹配器的使用无效

我有测试jms消息发送的Junit测试.我使用Spring jmsTemplate来做到这一点.在这里,我在下面的代码中,我想检查JMS模板是否已调用发送消息,无论它传递的actuall参数的值是什么.

我的发布者方法使用jmsTemplate发送方法看起来像跟在里面..

jmsTemplate.send(jmsQueueProperties.getProperty(key), new MessageCreator()
{
    public Message createMessage(Session session) throws JMSException
    {
        ObjectMessage obj = session.createObjectMessage(dialogueServiceResponse);
        return obj;
}
});
Run Code Online (Sandbox Code Playgroud)

在我的测试..

JmsTemplate mockTemplate = Mockito.mock(JmsTemplate.class);
...
publisher.publishServiceMessage(response);
....
Mockito.verify(mockTemplate, 
    Mockito.times(1)).send("appointment.queue", 
        Mockito.any(MessageCreator.class));
Run Code Online (Sandbox Code Playgroud)

但是当我执行时,我得到了

org.mockito.exceptions.misusing.InvalidUseOfMatchersException:参数匹配器的使用无效!....

原因是由于Mockito.any(MessageCreator.class),但是没有办法测试我的send方法是在没有在MessageCreator中创建实际对象的情况下执行的.

更新 有没有办法检查我的session.createObjectMessage(dialogueServiceResponse)也被调用

junit unit-testing mockito

33
推荐指数
2
解决办法
6万
查看次数

如何确保已重写的方法已同步

我有一类线程安全的公共代码.

该类中的一个方法是抽象的,需要为不同的实现重写.

我需要确保或至少向其他开发人员标记此方法的所有实现都需要是线程安全的.

做这个的最好方式是什么?

这个效果有关键字或注释吗?

我已经尝试过,abstract synchronized但不允许使用关键字组合.

java synchronization class thread-safety synchronize

25
推荐指数
1
解决办法
5137
查看次数

c#中异步和并行编程之间的关系是什么?

我感到困惑,因为异步编程是一种异步执行代码块的方法,它调用方法而不等待结果.同样,并行编程是一种同时执行多个任务的方法,但所有这些任务都是异步执行的.所以想知道/混淆c#中这两种编程范式之间的关系是什么.

c# parallel-processing

19
推荐指数
4
解决办法
9740
查看次数

这个web.xml错误是什么意思?

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.5" 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd">
Run Code Online (Sandbox Code Playgroud)

引用文件包含错误(http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd).有关更多信息,请右键单击"问题视图"中的消息,然后选择"显示详细信息..."

通过文件"web.xml"验证文件"web-app_2_5.xsd"时检测到以下错误.在大多数情况下,可以通过直接验证"web-app_2_5.xsd"来检测这些错误.但是,只有在web.xml的上下文中验证web-app_2_5.xsd时才会出现错误.

在细节上,我看到了一堆这些:

s4s-elt-character:除xs:appinfo和xs:documentation之外的架构元素中不允许使用非空白字符.看到'var _U ="undefined";'

schema web.xml

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

使用预准备语句和变量将Java中的Order By与JDBC驱动程序绑定在一起

我正在使用

  1. jdbcTemplate与mySQL数据库建立JDBC连接
  2. 准备好的语句尽可能地保护自己免受SQL注入攻击
  3. 需要接受来自用户的请求,以对十几个不同列中的任何一列进行数据排序
  4. 以下声明

    jdbcTemplate.query("SELECT * FROM TABLE1 ORDER BY ? ?", colName, sortOrder);
    
    Run Code Online (Sandbox Code Playgroud)

当然这不起作用,因为变量绑定不应该仅为查询中的表达式的参数值指定列名.

那么......人们如何解决这个问题呢?只是在Java代码中进行排序似乎是一个简单的解决方案,但是因为我得到一个用于排序的列的变量字符串,并且一个变量告诉我排序顺序....这是一个丑陋的比较器条件数量到覆盖.这似乎应该是解决它的常见模式的常见问题......

java sorting collections jdbc jdbctemplate

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

如何通过spring aop更改返回值

我在DAO层有一个返回值的方法,我想用spring AOP改变返回值,根据不同的要求,然后发送到SERVICE层的相应方法; 但我不知道该怎么做.

java aop spring

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

为什么Joda对象是不可变的?

我已经读过,Java版本小于7,Joda Time对象比Java的内置函数更可靠.一个引用的原因是Joda对象是不可变的.为什么这有益?如果我想更改Joda DateTime对象的年,小时和时区,我需要制作三份副本!

java jodatime

15
推荐指数
1
解决办法
2691
查看次数

Mysql:选择两列之间的值

我正在尝试选择2列之间的值.这是我的数据集

id    from    to    price
1     0.00    2.00  2.50
2     2.00    3.00  3.00
3     3.00    4.00  4.50
Run Code Online (Sandbox Code Playgroud)

我的目标,如果我的值为2,则选择ID为1的行(在from和to之间).所以这是我正在使用的查询:

select * from table where 2 between from and to;
Run Code Online (Sandbox Code Playgroud)

以下是MySQL在执行此查询时返回的结果:

id    from    to    price
1     0.00    2.00  2.50
2     2.00    3.00  3.00
Run Code Online (Sandbox Code Playgroud)

我正在寻找的结果如下:

id    from    to    price
1     0.00    2.00  2.50
Run Code Online (Sandbox Code Playgroud)

我尝试过使用<和>等等.但是,我总是得到两个结果.任何帮助将非常感激.

mysql sql between

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

Spring和@Autowired在DelegatingFilterProxy上

我正在尝试将一个spring bean注入过滤器,但无法使其工作.

注入的bean总是"空".我成功地在Controllers和HandlerInterceptors中自动装配这个相同的bean,因此它被正确注释.

过滤器类位于其余控制器的相同基础包下.

这是我的web.xml的相关部分

  <filter>
    <filter-name>CheckSession</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>CheckSession</filter-name>
    <url-pattern>/panel/*</url-pattern>
  </filter-mapping>
Run Code Online (Sandbox Code Playgroud)

这是过滤器的代码

@Component 
public class CheckSession extends OncePerRequestFilter implements Filter {

    @Autowired private Usuario usuario;

    @Override
    protected void doFilterInternal(
        HttpServletRequest request,
        HttpServletResponse response, FilterChain chain)
    throws ServletException, IOException {

        //  always null
        System.out.println("autowired " + usuario);
        chain.doFilter(request,  response);
    }
}
Run Code Online (Sandbox Code Playgroud)

过滤器在每个请求时触发.

这些是"Usuario"bean中的注释

@Component
@Scope(value="session", proxyMode=ScopedProxyMode.TARGET_CLASS)
public class Usuario implements java.io.Serializable { ... }
Run Code Online (Sandbox Code Playgroud)

我错过了什么?谢谢!

spring autowired

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

如何设置属性网格的列宽?

我在我的应用程序中使用属性网格来显示对象属性的名称和值.

默认情况下,列的宽度(名称和属性)的比例为50:50.我们可以选择滑动分离器来改变这个宽度.我想知道如何以编程方式调整此宽度,以便可以设置为25:75.

.net c# propertygrid winforms

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