如何在 java 受保护方法中测试局部变量

How to test local variables inside java protected method

我正在尝试找到一种方法来测试在受保护方法内声明和启动的局部变量。这是我的代码。我想测试将“id”和“someText”添加到 context 和在 finally 块中删除。有什么方法可以在 java 中进行测试吗?感谢任何帮助。

public abstract class BaseTransaction {

    protected Status handleTransaction() {

        Map<String, String> context = new HashMap();
        context.put("id","someText");

        try {
            //some other method calls
        } finally {
            context.remove("id");
        }

    }

}

你不应该测试context,那太低了,但如果你坚持,请将代码更改为:

protected Status handleTransaction() {
    Map<String, String> context = new HashMap<>();
    context.put("id", "someText");
    try {
        return handleContext(context);
    } finally{
        context.remove("id");
    }
}
protected Status handleContext(Map<String, String> context) {
    //some other method calls
}

您现在可以模拟 handleContext 并调用 handleTransaction,以测试 context 地图在调用 handleContext 时是否具有正确的内容。

您也可以直接调用 handleContext,以测试它是否能正确响应 context 地图中的各种内容。

基本上,您已将原始方法的逻辑拆分为 2 个单元,可以独立 测试。