如何测试使用EasyMock返回另一种方法的方法?

问题描述 投票:0回答:1

我正在使用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值。在测试案例中如何避免此空值。任何帮助,将不胜感激。

谢谢

java easymock
1个回答
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");
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.