假设我们有以下课程:
d
我该如何测试这门课程?由于eclipse只想测试公共方法,我应该如何在不设置setter的情况下测试getter?将上述类中的 package com.porphyrie.examples;
public class TestExample {
private String name;
private int id;
public TestExample() {
setName("testExample");
setId(3);
}
public String getName() {
return name;
}
private void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
private void setId(int id) {
this.id = id;
}
}
setter-methods设置为private
仅用于测试目的是否有效?
感谢您的帮助......
答案 0 :(得分:1)
您的示例代码是未编写的代码的一个很好的示例,可以轻松进行单元测试。如果您采用的思维方式必须以一种让您更容易测试的方式设计/构造/编写代码,那么您就不应该有这些问题。简短的回答,是的,如果您不希望setter成为公共API的一部分,那么将setter公开为启用您的测试或包/默认范围。
或者,您可以添加另一个带参数的构造函数,以便在创建实例时为您设置值。
答案 1 :(得分:0)
你不应该将setter设为私有,因为setter的目的是让程序员实现一个类,将他们想要的值设置到类的字段中。由于字段已经是私有的,因此拥有私有设置器是多余的。如果你没有要变异的字段,那么将字段保留为私有字段,不要为这些字段创建setter。
So yes is the answer to your question.
如果你有理由不公开你的setter,那么你可以使用一个参数化的构造函数,它在创建这个类的对象时启动带有作为参数传递的值的字段,并在实例化对象时调用参数化构造函数。 / p>
答案 2 :(得分:0)
不能从您的单元测试用例中调用您的私有方法。所以要么你必须公开它,要么默认或保护(如果你把它放在同一个包中)。您通常不测试私有方法,因为它们只能(通常)通过另一个公共方法间接测试。当你试驾并制作私人方法时,它们通常是“提取方法”重构的结果,并且已经被间接测试。