簡體   English   中英

如何使用 EasyMock 測試返回另一個方法的方法?

[英]How to test method which returns another method using EasyMock?

我正在使用 EasyMock 編寫測試用例。 我的測試方法調用“返回 verify.getVerification(paramter 1, paramter 2, parameter 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 值。 如何在測試用例中避免這個空值。 任何幫助,將不勝感激。

謝謝

更新的答案,現在我有完整的代碼: 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");
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM