构造函数的测试用例,因为我有一个过滤器逻辑

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 方法,或者你可以使用多态性(创建 MyClassMySpecialCharacterClass 基于 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
  ...
}