小编Wal*_*lls的帖子

嘲笑假定存在的私有变量

如果没有在您正在测试的类中创建/初始化模拟对象,它是如何在运行时获取模拟对象的,它不是静态的(单例模式),或者您没有某种类型的测试构造函数可以挂钩?

在我正在编写单元测试的类中,我遇到了一个我尚未遇到/解决过的场景.我有一个JMS资源(QueueConnectionFactory供参考,但它没关系),这是我正在测试的类的私有变量.由于它具有javax.annotation.Resource注释,因此在运行时假定它是可用的.在测试期间,它不是,这就需要模拟这个对象.

它不是一个静态类,并没有以静态方式使用,如果它是我可以轻松地使用我遇到的各种静态模拟方法进行模拟.由于资源永远不会在本地创建(在构造函数中或甚至在测试构造函数中),因此我无法传入Mock对象,因此在测试的运行时,将使用mock而不是实际的对象.如何模拟此资源,以便在测试执行时,它将用于代替@Resource我正在测试的类中的私有对象?

作为参考,代码调用createConnection()QueueConnectionFactory其中抛出一个空指针异常,因为该工厂尚未初始化/嘲笑.

@Stateless
public class Example{
  @Resource(name = "jms/exampleQCF")
  private QueueConnectionFactory queueFactory;

  ...

  public void testMe(){
    Connection connection = queueFactory.createConnection();
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

java mocking mockito powermock

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

HTTP请求中缺少元素 - 空或空?

我有一个HTTP请求javax.servlet.http.HttpServletRequest传递一个值,用于使用JAX-RS在Java Web服务中处理的某些代码中.Java中的POST函数正在消耗application/json.有两个可能的值传递给请求,调用一个X和另一个Y,假设两个都是字符串.该请求要求将两个可能值中的至少一个视为"有效".

当请求进入时,如果X提供并且Y完全不在请求之外,检查是否Y存在的正确方法是什么?你会检查是否Y.isEmpty()Y == null?提供X不保证Y存在,反之亦然.

java servlets jax-rs

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

Hibernate @ManyToOne引用类使用@NaturalId而不是@Id

我有一些Hibernate/JPA注释(实际上仍然不知道区别)允许我创建一个关联类.此类将两个与一个对象相关的项组合在一起.我最初使用@JoinTable但是意识到我需要更多关于元数据的元数据,因此必须将代码转换为另一种对象类型.

现在我@Id用来标记ID我的对象的列,并@NaturalId (mutable = false)用于a String uuid.

我的关联类正在使用@ManyToOne并创建表,但是当我查看它时,表使用该@Id字段作为映射列.我更希望这个关联类使用@NaturalId uuid易于将关系/关联传递到其他系统.

如何让关系使用正确的标识符?

作为参考,我的DB和Java代码如下所示:

AssociationsTable
----------------------------------------------
| ID | META DATA | ID ASSOC. 1 | ID ASSOC. 2 |
----------------------------------------------
| 1  |  stuff    |    1        |     2       |
----------------------------------------------

Objects
------------------------------
| ID | META DATA | UUID      | 
------------------------------
| 1  |  stuff    |  FOO-123  |
------------------------------
| 2  |  stuff    |  BAR-456  |
------------------------------ …
Run Code Online (Sandbox Code Playgroud)

java hibernate jpa naturalid

6
推荐指数
1
解决办法
1751
查看次数

Python匹配字符串,如果它不以X开头

我想在我的磁盘上搜索一个名为"AcroTray.exe"的文件.如果文件位于"Distillr"以外的目录中,程序应该打印警告.我使用以下语法来执行否定匹配

(?!Distillr)
Run Code Online (Sandbox Code Playgroud)

问题是虽然我使用"!" 它总是产生一个MATCH.我试图使用IPython找出问题,但失败了.这是我试过的:

import re

filePath = "C:\Distillr\AcroTray.exe"

if re.search(r'(?!Distillr)\\AcroTray\.exe', filePath):
    print "MATCH"
Run Code Online (Sandbox Code Playgroud)

它打印一个MATCH.我的正则表达式出了什么问题?

我想得到一个匹配:

C:\SomeDir\AcroTray.exe
Run Code Online (Sandbox Code Playgroud)

但不是:

C:\Distillr\AcroTray.exe
Run Code Online (Sandbox Code Playgroud)

python regex match

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

获取javax.transaction.RollbackException:准备:不与Atomikos JTA投票

我正在使用Hibernate和Atomikos for JTA作为我的一个概念证明.我得到一个意外的JTA事务回滚异常,可能是由于超时.例外是:

javax.transaction.RollbackException: Prepare: NO vote

hibernate jta atomikos

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

rails:yml合并

假设我的rails配置有一个yml文件...

settings.yml中

defaults: &defaults
  interceptor_email: robot@wearemanalive.com

development:
  <<: *defaults

test:
  <<: *defaults

production:
  <<: *defaults
Run Code Online (Sandbox Code Playgroud)

我希望有另一个yml文件,它不包含在版本控制中,每个开发人员都在本地维护...

user_settings.yml

development:
  interceptor_email: userfoo@domain.com
Run Code Online (Sandbox Code Playgroud)

如何合并这些密钥?我正在用esb处理我的yml文件,所以这也是一个选项.只是无法弄清楚如何做到这一点.我有它设置所以如果我的环境缺少一个键,键会回退到默认值.

ruby yaml ruby-on-rails erb

4
推荐指数
1
解决办法
6799
查看次数

EasyMock异常处理

我正在使用EasyMock创建一些junit测试用例.到目前为止,我期望返回POJO的类是有意义的,但是我应该如何处理本身可能抛出异常的DAO对象.我的测试用例是检查DAO遇到问题时抛出的预期异常.使用EasyMock我尝试模拟DAO对象(从foo类中测试),处理较低级别DAO异常的正确方法是什么.

类/简单调用的示例如下:(假设所有getter/setter /构造函数都有效且存在)

public class foo{
    private daoClass dao = daoClass.getInstance();
    public String getValueFromDB(String key) throws DBException{
        return dao.lookup(key);
    }
}

public class daoClass{ //singleton DAO 
    public daoClass getInstance(){
       //singleton access here
    }
    public String lookup(String key) throws DBException{
        try{
            //DB LOGIC
        }
        catch(Exception e){
            throw new DBException(e.getMessage());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试测试foo该类时,我希望能够测试此DBException.如果我在try/catch(测试中)中调用DAO调用,或者在测试中添加一个抛出,我该如何处理?我知道expected=DBException如果抛出测试会通过测试,但是你应该在句法上如何处理任何数量的内部异常?

测试代码示例:

@Test(expected=DBException.class)
public void testFooError(){
    String key = "test";
    String value = "expected";
    daoClass daoMock = createMock(daoClass.class);
    try{
        expect(daoMock.lookup(key)).andReturn(value);
    } catch (DBException …
Run Code Online (Sandbox Code Playgroud)

java junit easymock

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

CloudFormation SecurityGroup循环参考

我正在使用两个需要互相交谈的简单Web应用程序。在AWS CloudFormation中,我有一个模板,该模板创建一个EC2实例并将这两个应用程序安装在同一服务器上(最终,我将它们拆分开来,但目前它们都位于同一EC2实例上)。

作为EC2实例的一部分,我必须定义要使用的SecurityGroup。目前,我一直在使用默认的,但是我想动态地构建一个。在该组中,我允许从我的计算机输入SSH,并允许从包装盒到自身的一些端口。

当使用默认组时,事实上,我可以将服务器的公共IP添加到其自己的安全组中,以使其能够与自身通信。问题是在CloudFormation模板期间,我在SecurityGroup和EC2实例之间获得了循环引用。该实例需要一个SecurityGroup才能启动,并且该组需要包含EC2框的Public IP规则。

有没有更好的方法可以执行此操作,或者以某种方式锁定“ localhost”的行以暂时允许这些流量进入​​?

amazon-ec2 amazon-web-services aws-cloudformation

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

寻找一种方法将Char*分配给Char

所以基本上我会在这样的东西中加入4个字符:

char color1 = 'y';
Run Code Online (Sandbox Code Playgroud)

我想做的是:

char *newcolor = color1;
Run Code Online (Sandbox Code Playgroud)

基本上我会得到一个y,我想把它存储到我的char *所以我可以连接字符,所以是一个char * colorpattern像这样的ygpb字母代表一种颜色.

希望有一种简单的方法来分配它,如果没有生病,请尝试找到一种方法将值存储到a char *中.

c char

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