簡體   English   中英

在C#中測試Typesafe枚舉模式

[英]Testing the typesafe enum pattern in C#

我正在使用“類型安全的枚舉模式”

public class Level
{
    public static readonly Level Low = new Level(0, "Low");
    public static readonly Level Medium = new Level(1, "Medium");
    public static readonly Level High = new Level(2, "High");

    private int _value;
    private string name;

    private Level(int value, string name)
    {
        _value=value;
        _name=name;
    }
}

出於測試目的,我需要創建一個無效的Level(通過反射進行)。

int id = -1;
string value = "invalid";
var constructor = typeof(Level).GetConstructor(BindingFlags.NonPublic | BindingFlags.Instance, null, new Type[] {typeof(int), typeof(string)}, null);
var invalidLevel = (Level)constructor.Invoke(new object[] {id, value});

用反射來訪問私有構造函數似乎....對我來說是錯誤的。 有沒有更好的方法來使無效的水平?

為了測試,我需要創建一個無效的關卡

為什么? 這里的枚舉模式的要點是從那里停止它成為無效級別。

嘗試測試這種破壞是否就像通過通過反射使用錯誤數量的參數來調用某個方法來測試該方法是否類型安全。 基本上,您不應該嘗試測試此路徑IMO。

可能要測試其接收的任何代碼一條道路Level是它適當地處理空值(例如,通過拋出ArgumentNullException )。

單元測試是關於測試類的公共方法/屬性(即,使用公共API)。 只要您的課程不公開公共ctor,就不需要為此進行測試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM