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/