java - 不包含4级-Java

标签 java

public class Degree {

public Degree(List<Grade> year2, List<Grade> year3) {

    if (year2.size() != 4 || year3.size() != 4) {
        throw new IllegalArgumentException();
    }   
}

我有“不包含 4 级”的声明来创建 Junit 测试。有没有更好的方法来改进这个陈述(以我的知识来帮助我将来)。

  @Test(expected = IllegalArgumentException.class)
  public void donotcontaingrade() {
    List<Grade> year2 = new ArrayList<>();
    year2.add(new Grade(1));
    year2.add(new Grade(2));
    year2.add(new Grade(3));

    List<Grade> year3 = new ArrayList<>();
    year3.add(new Grade(1));
    year3.add(new Grade(2));
    year3.add(new Grade(3));
    new Degree(year2, year3);
}

我的 Junit 测试示例

最佳答案

您的测试将通过,因为将引发异常。

但是,您犯了一个常见错误,即尝试在一次测试中测试多个问题。您确实需要四次测试才能完全覆盖。

  1. 快乐之路,您传入两个有效参数并返回一个实例,而不是异常(exception)。

  2. 您传递了一个坏值和一个好值,并得到了异常。

  3. 您传递一个好的值和一个坏的值,并得到一个异常。

  4. 您传入两个错误值并得到异常。

后期添加:当 if 语句包含 OR 运算符时,您无法在工具中获得 100% 的覆盖率。这是因为覆盖率工具想要检查这两个条件是否为假。但是,OR 停止检查第一个 false,因此不会检查第二个条件。

为了达到 100% 的覆盖率,请使用 OR 将 if 拆分为两个 if。代码执行是相同的,但覆盖率工具将看到所有执行的代码。

关于java - 不包含4级-Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47799712/

相关文章:

java - 合并排序从文件中读取数据

java - LIKE 正在处理 BLOB 类型,但 = 不工作

Java Swing 自定义控件

java - 使用 spring ws 在 soap 请求中发送 XmlData

java - @CascadeOnDelete 和 CascadeType.REMOVE 注解有什么区别?

Java Play 2.4 使用注入(inject)为类编写测试用例

java - jBCrypt 替代品?官方线程安全,拥有更大的社区

java - 我执行 "Intersection of Two Linked Lists"的错误在哪里?

java - 康威的生命游戏,每个细胞都是一条线

java - Android自定义View——适配不同屏幕