3
我正在測試一組輸出樣式器類,它在將數據輸出到輸出接口之前對數據進行樣式設置。每個樣式器的行爲取決於多達5種不同的條件(目前,但第六種方式)正在輸出的對象:isKey,isDefault,isEmpty,isReadOnly,isAccessible具有大量相互依賴條件的單元測試代碼
因此,一個樣式器如果只讀數據可能不會輸出任何內容,而另一個可能會顯示「訪問被拒絕」。
目前我正在測試這些線條,但隨着更多條件的添加,測試爆炸。
{
// isKey, isDefault, isEmpty, isReadOnly, isAccessible
ValueOutputTester::TestConditions conditions = {0, 0, 0, 0, 0};
EXPECT_EQ(valueOutputTester(conditions), accessDeniedOutput);
}
{
ValueOutputTester::TestConditions conditions = {0, 0, 0, 0, 1};
EXPECT_EQ(valueOutputTester(conditions), normalOutput);
}
{
ValueOutputTester::TestConditions conditions = {0, 0, 0, 1, 0};
EXPECT_EQ(valueOutputTester(conditions), accessDeniedOutput);
}
{
ValueOutputTester::TestConditions conditions = {0, 0, 0, 1, 1};
EXPECT_EQ(valueOutputTester(conditions), accessDeniedOutput);
}
{
ValueOutputTester::TestConditions conditions = {0, 0, 1, 0, 0};
EXPECT_EQ(valueOutputTester(conditions), emptyOutput);
}
...
你能推薦一個更好的方法嗎?
如果所有這些都是布爾型標記,則最終會具有'2之間^(N-1)'和'2^N'測試,其中' n'是標誌的數量(但你可能已經知道了)。我假設你正在測試所有組合,因爲你使用'(0,0,0,1,1)'的測試。除了測試所有組合,您可以單獨測試每個標誌(最多測試2n個測試),然後添加相關組合。也有代碼來自動生成你的測試。 – Renan