依賴系統時間執行不同方法的程式,
測試時可能就需要改變系統時間來確定程式是否有問題。
2013年5月20日 星期一
2013年5月14日 星期二
Oracle UT 自製Assert
參考Oracle PL/SQL 5th
Oracle沒有提供UT的元件,
所以必須要自己撰寫類似Assert的檢核機制。
ex.
<!--more>
所以UT的撰寫時,可以獨立的把上述兩個Procedure撰寫在oracle中,
或者可以直接寫在Declare裡。
ex.
結果(DBMS_OUTPUT):
通過→
筆數檢核:PASSED
失敗→
筆數檢核:FAILED. Expected : 10 ;got 9
Oracle沒有提供UT的元件,
所以必須要自己撰寫類似Assert的檢核機制。
ex.
PROCEDURE ASSERT (description IN VARCHAR2 , expected_value IN VARCHAR2, actual_value IN VARCHAR2) --驗證用
IS
BEGIN
DBMS_OUTPUT.PUT(description || ': ');
IF expected_value = actual_value OR (expected_value IS NULL AND actual_value IS NULL)
THEN DBMS_OUTPUT.PUT_LINE('PASSED');
ELSE DBMS_OUTPUT.PUT_LINE('FAILED. Expected ' || expected_value || '; got ' || actual_value);
END IF;
END;
PROCEDURE ASSERT (description IN VARCHAR2 , expected_value IN NUMBER, actual_value IN NUMBER) --驗證用
IS
BEGIN
DBMS_OUTPUT.PUT(description || ': ');
IF expected_value = actual_value OR (expected_value IS NULL AND actual_value IS NULL)
THEN DBMS_OUTPUT.PUT_LINE('PASSED');
ELSE DBMS_OUTPUT.PUT_LINE('FAILED. Expected ' || expected_value || '; got ' || actual_value);
END IF;
END;
-------------------------------<!--more>
所以UT的撰寫時,可以獨立的把上述兩個Procedure撰寫在oracle中,
或者可以直接寫在Declare裡。
ex.
Declare
A number;--預計資料筆數
B number;--實際資料筆數(從table撈)
PROCEDURE ASSERT (description IN VARCHAR2 , expected_value IN VARCHAR2, actual_value IN VARCHAR2) --驗證用
IS
BEGIN
DBMS_OUTPUT.PUT(description || ': ');
IF expected_value = actual_value OR (expected_value IS NULL AND actual_value IS NULL)
THEN DBMS_OUTPUT.PUT_LINE('PASSED');
ELSE DBMS_OUTPUT.PUT_LINE('FAILED. Expected ' || expected_value || '; got ' || actual_value);
END IF;
END;
PROCEDURE ASSERT (description IN VARCHAR2 , expected_value IN NUMBER, actual_value IN NUMBER) --驗證用
IS
BEGIN
DBMS_OUTPUT.PUT(description || ': ');
IF expected_value = actual_value OR (expected_value IS NULL AND actual_value IS NULL)
THEN DBMS_OUTPUT.PUT_LINE('PASSED');
ELSE DBMS_OUTPUT.PUT_LINE('FAILED. Expected ' || expected_value || '; got ' || actual_value);
END IF;
END;
BEGIN
A : =10;(預計10筆)
SELECT Count(*) INTO B FROM table;
ASSERT('筆數檢核:',A,B) ;
END;
------------------------------------------------------------------------------------------------結果(DBMS_OUTPUT):
通過→
筆數檢核:PASSED
失敗→
筆數檢核:FAILED. Expected : 10 ;got 9
2013年5月7日 星期二
DECODE 範例
參考
http://www.eygle.com/archives/2005/10/oracle_howto_use_decode_function.html
TABLE:
TABLE EEP.TERMINFO
(
TERMID CHAR(1 BYTE),
SEQNO INTEGER,
CURRFLAG CHAR(1 BYTE),
SETDATE DATE
)
http://www.eygle.com/archives/2005/10/oracle_howto_use_decode_function.html
TABLE:
TABLE EEP.TERMINFO
(
TERMID CHAR(1 BYTE),
SEQNO INTEGER,
CURRFLAG CHAR(1 BYTE),
SETDATE DATE
)
2013年5月3日 星期五
訂閱:
意見 (Atom)
