我正在使用EasyMock编写测试用例。我的测试方法称为“返回verify.getVerification(参数1,参数2,参数3)”。当我从测试类调用测试方法时,它返回null。
在下面共享我的代码段:
//EntityField.java
private Class <? extends Entity> classtype;
private String paths;
Permission filter;
@Inject
private transient RestrictInterface restriction;
public EntityField(final Class <? extends Entity> classtype, final String
path, final Permission filterclass)
{
this.classtype = classtype;
this.paths = path;
filter = filterclass;
}
public Permission getBasePermission() //my test method
{
if(Active.class.isAssignableFrom(classtype))
{
filterclass=new
SimplePermission(Active.active_attribute,Operator.equals,Boolean.TRUE);
}
else if (NotActive.class.isAssignableFrom(classtype))
{
filterclass=new
SimplePermission("notactive",Operator.equals,Boolean.TRUE);
}
return restriction.getBasePermission(classtype,filterclass);
}
//Test.java
@Test
public void testgetBaseRestriction() {
//NiceMock
EntityField entityfieldobject = new EntityField (classtype, path,
filterclass);
//Mock Objects
RestrictInterface restriction = createNiceMock(RestrictInterface.class);
Permission filter = new
SimplePermission(Active.active_attribute,Operator.equals,Boolean.TRUE);
final Class = Active.class;
//expects
expect(restriction.getBaseRestriction(eq(classtype),eq(filterclass)))
.andStubReturn(filter);
//replay
replay(restriction);
Permission object = entityfieldobject.getBasePermission();
// here object returns null
verify(restriction);
}
我想测试我的测试类中是否设置了filterclass值。 在测试用例中如何避免此空值。任何帮助将不胜感激。
谢谢
答案 0 :(得分:0)
更新的答案,现在我有完整的代码:
restriction
中似乎没有注入entityfieldobject
,因此null为正常值。 EasyMock不知道@Inject
。请自己注入依赖项。我建议为此使用构造函数注入。
下面的代码给出了一个很好的例子。
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.mock;
import static org.easymock.EasyMock.replay;
import static org.junit.Assert.assertNotNull;
public class TestClass {
@Test
public void testgetBaseRestriction() {
Verification verification = mock(Verification.class);
expect(verification.getVerification("1", "2", "3")).andReturn(new Permission());
replay(verification);
EntityField entityfieldobject = new EntityField(verification);
assertNotNull(entityfieldobject.getVerification());
}
}
class Permission {}
interface Verification {
Permission getVerification(String s1, String s2, String s3);
}
class EntityField {
private final Verification verification;
public EntityField(Verification verification) {
this.verification = verification;
}
public Permission getVerification() {
return verification.getVerification("1", "2", "3");
}
}