如果没有在您正在测试的类中创建/初始化模拟对象,它是如何在运行时获取模拟对象的,它不是静态的(单例模式),或者您没有某种类型的测试构造函数可以挂钩?
在我正在编写单元测试的类中,我遇到了一个我尚未遇到/解决过的场景.我有一个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) 我有一个HTTP请求javax.servlet.http.HttpServletRequest传递一个值,用于使用JAX-RS在Java Web服务中处理的某些代码中.Java中的POST函数正在消耗application/json.有两个可能的值传递给请求,调用一个X和另一个Y,假设两个都是字符串.该请求要求将两个可能值中的至少一个视为"有效".
当请求进入时,如果X提供并且Y完全不在请求之外,检查是否Y存在的正确方法是什么?你会检查是否Y.isEmpty()或Y == null?提供X不保证Y存在,反之亦然.
我有一些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) 我想在我的磁盘上搜索一个名为"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) 我正在使用Hibernate和Atomikos for JTA作为我的一个概念证明.我得到一个意外的JTA事务回滚异常,可能是由于超时.例外是:
javax.transaction.RollbackException: Prepare: NO vote
假设我的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文件,所以这也是一个选项.只是无法弄清楚如何做到这一点.我有它设置所以如果我的环境缺少一个键,键会回退到默认值.
我正在使用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) 我正在使用两个需要互相交谈的简单Web应用程序。在AWS CloudFormation中,我有一个模板,该模板创建一个EC2实例并将这两个应用程序安装在同一服务器上(最终,我将它们拆分开来,但目前它们都位于同一EC2实例上)。
作为EC2实例的一部分,我必须定义要使用的SecurityGroup。目前,我一直在使用默认的,但是我想动态地构建一个。在该组中,我允许从我的计算机输入SSH,并允许从包装盒到自身的一些端口。
当使用默认组时,事实上,我可以将服务器的公共IP添加到其自己的安全组中,以使其能够与自身通信。问题是在CloudFormation模板期间,我在SecurityGroup和EC2实例之间获得了循环引用。该实例需要一个SecurityGroup才能启动,并且该组需要包含EC2框的Public IP规则。
有没有更好的方法可以执行此操作,或者以某种方式锁定“ localhost”的行以暂时允许这些流量进入?
所以基本上我会在这样的东西中加入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 *中.