我是單元測驗的初學者,我目前面臨著我的第一個問題。
我想對我的CheckedChange功能進行單元測驗:
protected void rbtnMSSQL_CheckedChanged(object sender, EventArgs e)
{
if (rbtnMSSQL.Checked && rbtnOracle.Checked)
{
rbtnOracle.Checked = false;
}
}
好吧,如果我想斷言,我需要來自rbtnMSSQL.Checkedand的 bool 值rbtnOracle.Checked,但它們是私有的。
我想它可以與內部和
[assembly: InternalsVisibleTo("UnitTests")]
但這是將每個私人價值轉化為內部價值的好方法嗎?
uj5u.com熱心網友回復:
私有的東西用于使事情在類內作業。
單元測驗應該斷言類是如何作業的,如果它回傳正確的值等。
最終,設定復選框的值應該由某個控制器或視圖模型完成(如果您使用正確的設計模式),然后這個設定正確的值將是公開的(由視圖可見)。那么它就可以進行單元測驗。
因此,也許不是您正在尋找的答案,但您需要重新設計部分代碼或整個視圖(拆分為視圖和視圖模型)。
uj5u.com熱心網友回復:
很難對有副作用的函式進行單元測驗。通常,您應該只為沒有副作用的函式創建單元測驗。為此,從事件處理程式中提取實際功能并從事件處理程式中呼叫它:
protected void rbtnMSSQL_CheckedChanged(object sender, EventArgs e)
{
DisableOtherCheckBoxWhenOneWasChecked(rbtnMSSQL, rbtnOracle);
}
// Actually put that function in a separate class.
public void DisableOtherCheckBoxWhenOneWasChecked(CheckBox checkedChanged, CheckBox other)
{
if (checkedChanged.Checked && other.Checked)
{
other.Checked = false;
}
}
現在,您可以為DisableOtherCheckBoxWhenOneWasChecked自己的 CheckBox 物件撰寫單元測驗并傳入。
一般來說,單元測驗并不是測驗 UI 內容的好工具。您應該查看用于 UI 測驗的特定測驗框架。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/345893.html
上一篇:論據不一樣!通緝
下一篇:我如何使用python登錄
