繁体   English   中英

如何在 JUnit 中测试设置器?

[英]How to test setter in JUnit?

我正在研究 JUnit 测试。 我想在 JUnit 中测试 getter 和 setter,但它不起作用。 这是第一个 class。

public class Practice {
private String name;

public Practice(String name) {
    this.name = name;
}

public String getName() {
    return this.name;
}

public void setName(String name) {
    this.name = name;
}

这是第二个 class。

import java.util.ArrayList;

public class Practice2 {
private ArrayList<Practice> practice;

public Practice2() {
    this.practice = new ArrayList<Practice>();
}

public ArrayList<Practice> getPractice() {
    return this.practice;
}

public void setPractice(ArrayList<Practice> practice) {
    this.practice = practice;
}
}

setPractice的参数是ArrayList,所以我把Practice class的object放在参数里面,但是却显示错误。

import org.junit.jupiter.api.Test;

public class testGetterAndSetter {

@Test
public void testSetter() {
    Practice2 aaa = new Practice2();
    Practice bbb = new Practice("Hello");
    aaa.setPractice(bbb.setName("A"));
}
}

我需要如何更改以测试二传手,我该如何测试?

问题出在这里:

aaa.setPractice(bbb.setName("A"));

setPractice()需要ArrayList的参数,但bbb.setName("A")返回void

除非您的 getter 和 setter 中有非常复杂的逻辑(绝对不是这种情况),否则对它们进行单元测试是矫枉过正、浪费时间和在执行它们时浪费计算机资源。

而是专注于您的业务逻辑。 专注于逻辑不那么简单的类,这是应用程序的核心。 少关注实现 100% 的测试覆盖率,多关注彻底测试应用程序的主要部分。

您通常会结合测试相应的 getter 来测试 setter。

设置一个值,然后获取它,看看你得到的是不是你输入的。

当然,这样的测试是如此微不足道,很多人只是忽略了它,但我存在于一个测试覆盖率非常高的环境中(你永远不知道是否有人在 setter 中打错了……)所以这是一个包含它们是个好主意(当然,除非你有像 Lombok 这样的东西,它可以为你即时生成 getter 和 setter)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM