构造函数的测试用例,因为我有一个过滤器逻辑
Test case for constructor as i have a filter logic
我有一个构造函数,其中有过滤逻辑,我想测试它,虽然为构造函数编写测试用例在实践中不是我想要的代码覆盖率,已经尝试了很多链接,但 none 正在解释如何处理一个构造函数。
public Myclass {
public Myclass(AnotherClass obj)
{
_key = obj.key;
_ID = obj.ID;
_CandidateMode = obj.CandidateMode;
if(_CandidateMode == obj.CandidateMode.numeric
{
//Dosomething
}
else
{
//Do something with special character.
}
}
}
绝对要避免将逻辑放在构造函数中。很好,你知道 :-) 在这种特殊情况下,也许 if
可以进入 MyClass
的每个 public 方法,或者你可以使用多态性(创建 MyClass
或 MySpecialCharacterClass
基于 AnotherClass
对象)?
无论如何,要得到一个直接的答案:如果你真的必须测试构造函数逻辑,就像你测试任何其他方法一样(顺便说一下,在某些语言中它只是一个名为 new
的静态方法).
[TestMethod]
public void is_constructed_with_numeric_candidate() {
// Given
AnotherClass obj = new AnotherClass { CandidateMode = CandidateMode.numeric };
// When
MyClass myClass = new MyClass(obj);
// Then
// assert myClass object state is correct for numeric candidate
...
}
[TestMethod]
public void is_constructed_with_special_candidate() {
// Given
AnotherClass obj = new AnotherClass { CandidateMode = CandidateMode.special };
// When
MyClass myClass = new MyClass(obj);
// Then
// assert myClass object state is correct for special candidate
...
}
我有一个构造函数,其中有过滤逻辑,我想测试它,虽然为构造函数编写测试用例在实践中不是我想要的代码覆盖率,已经尝试了很多链接,但 none 正在解释如何处理一个构造函数。
public Myclass {
public Myclass(AnotherClass obj)
{
_key = obj.key;
_ID = obj.ID;
_CandidateMode = obj.CandidateMode;
if(_CandidateMode == obj.CandidateMode.numeric
{
//Dosomething
}
else
{
//Do something with special character.
}
}
}
绝对要避免将逻辑放在构造函数中。很好,你知道 :-) 在这种特殊情况下,也许 if
可以进入 MyClass
的每个 public 方法,或者你可以使用多态性(创建 MyClass
或 MySpecialCharacterClass
基于 AnotherClass
对象)?
无论如何,要得到一个直接的答案:如果你真的必须测试构造函数逻辑,就像你测试任何其他方法一样(顺便说一下,在某些语言中它只是一个名为 new
的静态方法).
[TestMethod]
public void is_constructed_with_numeric_candidate() {
// Given
AnotherClass obj = new AnotherClass { CandidateMode = CandidateMode.numeric };
// When
MyClass myClass = new MyClass(obj);
// Then
// assert myClass object state is correct for numeric candidate
...
}
[TestMethod]
public void is_constructed_with_special_candidate() {
// Given
AnotherClass obj = new AnotherClass { CandidateMode = CandidateMode.special };
// When
MyClass myClass = new MyClass(obj);
// Then
// assert myClass object state is correct for special candidate
...
}