对java代码进行单元测试

时间:2016-01-07 14:25:22

标签: java spring unit-testing

我遇到一些代码仍然达到100%的问题。

if (object== null) {
            errors.reject("some error");
        } 

Project使用Spring Framework及其类org.springframework.validation.Errors如何对此片段进行单元测试。

我无法测试的第二个片段就是这个。

for (int i = 0; i < model.getName().length(); i++) {
                int x = (int) model.getName().charAt(i);
                if (x < 33 || x > 126) {
                    errors.rejectValue("name", "some error");
                    break;
                }
            }

我希望有人能提供帮助:)

修改

public void validate() {
if (object== null) {
            errors.reject("some error");
        } 

        if (model.getName().equals("")) {
            errors.rejectValue("name", "some error");
        } else if (model.getName().length() < 6) {
            errors.rejectValue("name", "some error");
        } else if (model.getName().length() > 30) {
            errors.rejectValue("name", "some error");
        } else {
            for (int i = 0; i < model.getName().length(); i++) {
                int x = (int) model.getName().charAt(i);
                if (x < 33 || x > 126) {
                    errors.rejectValue("name", "some error");
                    break;
                }
            }
        }
}

1 个答案:

答案 0 :(得分:0)

为什么要尝试获得100%的报道?

正如@engineer提到What is a reasonable code coverage % for unit tests (and why)?

似乎最可能的罪魁祸首是branch-coverage。意味着不评估if条件(x < 33 || x > 126)中的所有可能路径。这是不可能的,因为x永远不会大于126且小于33

通过像这样的if条件有4个可能的分支。

  

true ||真&lt;&lt;这两个条件永远不会同时评估为真。

     

假||真

     

假||假

     

true ||假

只能覆盖34分支。