2010-11-09 19 views

回答

5

答:要麼測試與您發佈的版本不同的版本,要麼測試代碼中包含單元測試代碼(和成員)。

聽起來對我來說是一個非常糟糕的主意。

我通常去單獨的生產/測試項目,[InternalsVisibleTo]允許測試內部方法(這違背了一些人的教條,但似乎對我來說實用)。

+0

可以通過調試命令排除它們...... – grady 2010-11-09 16:01:45

+0

+1用於清楚說明問題並提供良好的潛在解決方案。 – Dan 2010-11-09 16:03:56

+1

@grady:如果您使用#ifdef排除編譯中的代碼,您仍然要測試您發佈的不同版本。 – 2010-11-09 18:34:56

1

我認爲能夠測試私有方法是'con',因爲它可以鼓勵現有類中新代碼的增加。如果私有邏輯非常複雜以至於需要專門的測試(超出公共可訪問範圍),那麼將該邏輯作爲具有可公開測試的接口的獨立類提取出來是非常有價值的。對於臨界情況,我謹慎地同意Jon的使用內部方法的方法(小心內部方法暴露多少)。

也就是說,我偶爾會專門開發一個類,以便我可以編寫使用虛擬方法要求檢測效果,這與部分分類方法鬆散地相關。這對我來說總覺得有點骯髒,我有時希望有一種方法可以將班級標記爲「內部未密封」。