我有构造函数,其中有过滤器逻辑并想测试它,尽管在实践中没有为构造函数编写测试用例,但我希望有代码覆盖率,尝试了很多链接,但没有一个解释如何处理构造函数。
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
方法,或者您可以使用多态性(基于AnotherClass
对象创建MyClass
或MySpecialCharacterClass
)?
无论如何,为了得到一个直接的答案:如果你真的必须测试构造函数逻辑,就像测试任何其他方法一样(顺便说一下,在某些语言中,它只是一个叫做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
...
}