Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何进行if的junittestelse分支_Java_Junit_Junit4_Junit3 - Fatal编程技术网

Java 如何进行if的junittestelse分支

Java 如何进行if的junittestelse分支,java,junit,junit4,junit3,Java,Junit,Junit4,Junit3,我正在尝试对该方法进行Junit测试 public List<QuestionBank> getQuestionBankDetails(){ if(stubbed){ return (List<QuestionBank>) BeanPopulateUtils.getPopulateBeanValues(new QuestionBank(), true); }else{

我正在尝试对该方法进行Junit测试

  public List<QuestionBank> getQuestionBankDetails(){
            if(stubbed){
                return (List<QuestionBank>) BeanPopulateUtils.getPopulateBeanValues(new QuestionBank(), true);
            }else{
                throw new NotImplementedException("Non-stubbed SOAP call not implemented");
            }
        }

如果stubbed是类变量,请创建一个对象并将该变量设置为false。然后调用函数
getQuestionBankDetails()。这样,您就可以检查else部分,因为缺少代码。我假设您的
类如下所示:

private boolean stubbed;

public boolean isStubbed() {
    return stubbed;
}

public void setIsStubbed(boolean isStubbed) {
    this.stubbed = isStubbed;
}

public List<QuestionBank> getQuestionBankDetails() {
    if (stubbed) {
        return (List<QuestionBank>) BeanPopulateUtils.getPopulateBeanValues(new QuestionBank(), true);
    }
    throw new NotImplementedException("Non-stubbed SOAP call not implemented");
}
@Test(expected=NotImplementedException.class)
public void getQuestionBankDetailsThrowsAnExceptionIfStubbed() {
    boolean memento = questionBankFacade.isStubbed();
    questionBankFacade.setIsStubbed(false);
    try {
        questionBankFacade.getQuestionBankDetails();
    } finally {
        questionBankFacade.setIsStubbed(memento);
    }
}

您需要编写一个单独的测试方法来测试else条件代码路径。

如果可能,尝试使用接口来区分存根实现和默认实现。最好使用配置逻辑来“注入”正确的行为,或者使用工厂来生成请求的类实例

请参见以下示例:

private boolean stubbed;

public boolean isStubbed() {
    return stubbed;
}

public void setIsStubbed(boolean isStubbed) {
    this.stubbed = isStubbed;
}

public List<QuestionBank> getQuestionBankDetails() {
    if (stubbed) {
        return (List<QuestionBank>) BeanPopulateUtils.getPopulateBeanValues(new QuestionBank(), true);
    }
    throw new NotImplementedException("Non-stubbed SOAP call not implemented");
}
@Test(expected=NotImplementedException.class)
public void getQuestionBankDetailsThrowsAnExceptionIfStubbed() {
    boolean memento = questionBankFacade.isStubbed();
    questionBankFacade.setIsStubbed(false);
    try {
        questionBankFacade.getQuestionBankDetails();
    } finally {
        questionBankFacade.setIsStubbed(memento);
    }
}
银行详情.类别

package example;

import java.util.List;

public interface BankDetails {
    List<QuestionBank> getQuestionBankDetails();
}
最后是JUnit测试:

问题库FacadeTest.class

package example;

import static org.junit.Assert.*;

import java.util.List;

import org.apache.commons.lang.NotImplementedException;
import org.junit.Test;

public class QuestionBankFacadeTest {

    @Test
    public void testDefaultImplementation() {
        final QuestionBankFacade questionBankFacade = new QuestionBankFacade(new BankDetailsDefaultImpl());
        List<QuestionBank> questionBankList = questionBankFacade.getQuestionBankDetails();
        //Test case that you already have
//       for(QuestionBank questionBank : questionBankList){
//             assertEquals("Name "+i+"", questionBank.getName());
//             assertEquals("Description "+i+"", questionBank.getDescription());
//             assertEquals("Pubished Status "+i+" ", questionBank.getPubishedStatus());
//             assertEquals("Questions "+i+"", questionBank.getQuestions());
//             i++;
//         }
    }

    @Test(expected = NotImplementedException.class)
    public void testStubbedImplementation() {
        final QuestionBankFacade questionBankFacade = new QuestionBankFacade(new BankDetailsStubbedImpl());
        questionBankFacade.getQuestionBankDetails();
    }

}
包示例;
导入静态org.junit.Assert.*;
导入java.util.List;
导入org.apache.commons.lang.NotImplementedException;
导入org.junit.Test;
公开课试题库FACADETEST{
@试验
public void testDefaultImplementation(){
最终问题BankFacade QuestionBankFacade=新问题BankFacade(新的BankDetailsDefaultImpl());
List questionBankList=questionBankFacade.getQuestionBankDetails();
//您已经拥有的测试用例
//用于(问题库问题库:问题库列表){
//assertEquals(“Name”+i+”,questionBank.getName());
//assertEquals(“Description”+i+”,questionBank.getDescription());
//assertEquals(“发布状态”+i+”,questionBank.getPubishedStatus());
//assertEquals(“问题“+i+”,问句库.getQuestions());
//i++;
//         }
}
@测试(预期=NotImplementedException.class)
公共void testStubbedImplementation(){
final QuestionBankFacade QuestionBankFacade=new QuestionBankFacade(new BankDetailsStubbedImpl());
questionBankFacade.getQuestionBankDetails();
}
}
package example;

import java.util.List;

public class BankDetailsStubbedImpl implements BankDetails {

    @Override
    public List<QuestionBank> getQuestionBankDetails() {
        throw new NotImplementedException("Non-stubbed SOAP call not implemented");
    }

}
package example;

public class QuestionBankFacade {

    private final BankDetails bankDetails;

    public QuestionBankFacade(final BankDetails bankDetails) {
        this.bankDetails = bankDetails;
    }

    public BankDetails getQuestionBankDetails() {
        return this.getQuestionBankDetails();
    }

}
package example;

import static org.junit.Assert.*;

import java.util.List;

import org.apache.commons.lang.NotImplementedException;
import org.junit.Test;

public class QuestionBankFacadeTest {

    @Test
    public void testDefaultImplementation() {
        final QuestionBankFacade questionBankFacade = new QuestionBankFacade(new BankDetailsDefaultImpl());
        List<QuestionBank> questionBankList = questionBankFacade.getQuestionBankDetails();
        //Test case that you already have
//       for(QuestionBank questionBank : questionBankList){
//             assertEquals("Name "+i+"", questionBank.getName());
//             assertEquals("Description "+i+"", questionBank.getDescription());
//             assertEquals("Pubished Status "+i+" ", questionBank.getPubishedStatus());
//             assertEquals("Questions "+i+"", questionBank.getQuestions());
//             i++;
//         }
    }

    @Test(expected = NotImplementedException.class)
    public void testStubbedImplementation() {
        final QuestionBankFacade questionBankFacade = new QuestionBankFacade(new BankDetailsStubbedImpl());
        questionBankFacade.getQuestionBankDetails();
    }

}