调用其他方法的方法的非单元测试

本文关键字:方法 单元测试 其他 调用 | 更新日期: 2023-09-27 18:05:37

我是新手。下面是业务单元代码

public enum HighlightType
{
    IP,
    Item,
    Address
}
public class UniformGridHighlighting
{
    public static event HighlightingChangedDelegate HighlightingChanged;
    private static List<string> _highlightedIPs = new List<string>();
    private static List<long> _highlightedItems = new List<long>();
    private static ContactInfoType _highlightedAddress;
    public static void ClearIPHighlighting()
    {
        _highlightedIPs.Clear();
        OnHighlightingChanged(HighlightType.IP);
    }
    private static void OnHighlightingChanged(HighlightType type)
    {
        if (HighlightingChanged != null)
        {
            HighlightingChanged(type);
        }
    }
}

我需要为ClearIPHighlighting编写单元测试用例。我该怎么做呢?

  [Test(Description = "to ")] 
  public void ClearIPHighlightingTets()
  {
       UniformGridHighlighting.ClearIPHighlighting();
       //How to call method
  }

调用其他方法的方法的非单元测试

给定当前设置,您只能测试事件是否被触发。

 [Test()] 
 public void ThatTheEventIsTriggeredWhenTheListIsCleared()
 {
    // Arrange
    bool eventTriggered = false;
    UniformGridHighlighting.HighlightingChanged += _ => { eventTriggered= true; };
    //Act
    UniformGridHighlighting.ClearIPHighlighting();
    //Assert:
    Assert.IsTrue(eventTriggered);
 }

并且类型正确

 [Test(Description = "to ")] 
 public void ThatTheEventIsTriggeredWithTheIPArgumentWhenTheIPListIsCleared()
 {
    // Arrange
    HighlightType? type = null;
    UniformGridHighlighting.HighlightingChanged += x => { type = x; };
    //Act
    UniformGridHighlighting.ClearIPHighlighting();
    //Assert:
    Assert.AreEqual(s, HighlightType.IP);
 }

要测试你之前的高亮是否被删除将会更难:

 [Test] 
 public void ThatTheIpIsNotHighlightedIfTheListWasCleared()
 {
    UniformGridHighlighting.HighlightIP("1.1.1.1");
    //Act
    UniformGridHighlighting.ClearIPHighlighting();
    UniformGridHighlighting.Highlihst(Grid);
    //Assert:
    //Go through the grid to figure out that the IP was not highlighted. The below is a total guess:
    bool wasHighlighted = Grid.Rows.Any(row => row.Cells.Any(Cell.Highlighted));
    Assert.Isfalse(wasHighlighted);
 }