java - 用于由 boolean 标志驱动的 Java 方法的 Junit

标签 java junit code-coverage eclemma

Java 方法如下所示

 public String generateResponseXML(List<Error> parsingErrors)
                throws XMLStreamException {


            Map<String, String> additionalNamespaces = new HashMap<String, String>();
            if (successfulResponse){
            additionalNamespaces.put(
                    ServiceInterface.COMMON_NAMESPACE_PREFIX,
                    ServiceInterface.COMMON_NAMESPACE);
            additionalNamespaces.put(
                    ServiceInterface.COMMON_NAMESPACE_PREFIX,
                    ServiceInterface.COMMON_NAMESPACE);
            }
            else {
                additionalNamespaces.put(
                        ServiceInterface.NAMESPACE_PREFIX,
                        ServiceInterface.NAMESPACE);
                additionalNamespaces.put(
                        ServiceInterface.NAMESPACE_PREFIX,
                        ServiceInterface.NAMESPACE);
            }

当我在 Junit 测试类中编写以下代码时:

String responseXML = xyzPayment.generateResponseXML( Errors );

当 successfulResponse 需要为真时,它不涵盖代码。如何覆盖 successfulResponse 为真的代码,而不是只覆盖 else 部分。请指导我如何在此处实现代码覆盖率?

最佳答案

那么,successful response 是一个成员变量,对吧?

如果您需要能够在测试中设置此变量,但又不想为其公开 setter ,则可以将其设为包私有(private) (https://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html)。然后,您将使您的测试类具有与您正在测试的类相同的包。

所以这个类应该是这样的:

public class MyClass {
    boolean successfulResponse = false;
    //code ...
}

然后你的测试会是这样的:

xyzPayment.successfulResponse = true;
String responseXML = xyzPayment.generateResponseXML( Errors );

关于java - 用于由 boolean 标志驱动的 Java 方法的 Junit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37009244/

相关文章:

android - Jacoco 代码覆盖率文件为空导致错误的覆盖率报告

swift - 忽略 XCTest 覆盖范围中的 View Controller

Java分隔符读取文本文件

java - 如何使用 JavaSound (Java, Java Sound) 从 .wave 文件读取信息

java - 通过 Netbeans 向数据库添加值

java - PowerMockito.doReturn 返回 null

delphi - 测量 Delphi 中的代码覆盖率

java - 使用正确的凭据访问基于 REST 的 Web 服务时出现响应代码 401

java - 在具有模块间测试依赖性的 Maven 构建中正确实现 Java 模块

java - 通过ant脚本运行junit时在控制台上获取输出