簡體   English   中英

如何使用 EasyMock 在 Java 中測試受保護的最終方法?

[英]How to test protected final method in Java using EasyMock?

我想使用 EasyMock 在 java 中為以下受保護的最終方法編寫測試用例。 有沒有辦法使用 EasyMock 編寫受保護的最終方法的測試用例?

我嘗試使用反射方法編寫 TC,但沒有成功。

Class < ? extends Entity > type;
private Filter filter;
private Input input;
private transient Service access;
private transient ConfigDao confdao;

protected final Limitation getBaseLimitation() {
    Validate.notNull(type);
    GroupClass Group = new GroupClass(GroupTypeClass.SELECTOR);
    if (A.class.isAssignableFrom(type)) {
        filter = new Simple(A.ATTRIBUTE_ACTIVE, Operator.EQUALS, Boolean.TRUE); //A class has static final static String ATTRIBUTE_ACTIVE = "Active";
    }
    if (G.class.isAssignableFrom(type)) {
        filter = new Simple("position", Operator.EQUALS, Position.ACTIVE);
    }
    if (Boolean.TRUE.equals(confdao.getconfdao().getarea())) {
        if (U.class.isAssignableFrom(type)) {
            Validate.notNull(input, "switched on.");
            Object Inputobj = input.getInput();
            return access.getBaseLimitation(type, Inputobj, Group, filter);
        }
    }
    return access.getBaseLimitation(type, Group, filter);
}

public Simple(String path, Operator operator, Object value) {
    this(Path, operator, new Object[]{value});
}

任何幫助,將不勝感激。

如果你是 mocking getBaseLimitation() ,不,EasyMock 幫不了你,因為 final 方法不能被覆蓋。 PowerMock 可以幫助你,但我個人會放棄final

如果您正在測試它,您可以從 class 中的同一個 package 中。 但 EasyMock 不需要這樣做。

那么, protected final就沒什么用了。 如果您不想超載,為什么要受到保護? 你最好是 package scope 或私人。

暫無
暫無

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

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