例如,我在我的仿真模型Matlab的功能塊是這樣的:Matlab的功能塊與設計驗證
function define_tests(row rowValues)
for i=1:length(rowValues)
sldv.test(row == rowValues(i));
設計驗證不生成每個我叫sldv.test
時間測試。它在上次調用它時只生成一個測試。
任何想法生成length(rowValues)
測試的可能解決方案?由於
例如,我在我的仿真模型Matlab的功能塊是這樣的:Matlab的功能塊與設計驗證
function define_tests(row rowValues)
for i=1:length(rowValues)
sldv.test(row == rowValues(i));
設計驗證不生成每個我叫sldv.test
時間測試。它在上次調用它時只生成一個測試。
任何想法生成length(rowValues)
測試的可能解決方案?由於
這個函數沒有輸出,並在其父母的功能沒有影響
它沒有明確說明,但我假設sldv.test
不在你的函數中必須「執行」或「調用」本身,而只是作爲表示SLDV在分析你的函數時使用的期望行爲的一種方式。我認爲sldv.test
不是要與您的函數中的控制流混合,因爲SLDV實際上並未執行此控制流。
此外,考慮的是,如果你指定如何sldv.test
定義的目的,增加新的控制邏輯(如循環或if語句)給你的函數專門,那麼這將無意中添加多餘的覆蓋目標(例如,您的for循環將具有與其關聯的決策覆蓋目標)。 (不知道這是否與你的情況有關,但認爲我會把它扔在那裏以防萬一)
我認爲你最好的選擇是避免在for循環中使用sldv.test
,並嘗試向量化測試表達式。使用你的榜樣,這應該是這樣的:
function define_tests(row, rowValues)
sldv.test(all(row == rowValues));
這應該規定所有的rowValues等於行元素的期望的行爲。
以下是關於vectorization in MATLAB的更多信息的鏈接。