我有將數據寫入數據庫的Java批處理應用程序。我想要一個自動化測試,將預期的輸出與數據庫中的數據進行比較。我使用DBfit來完成這個過程,並且工作得很好,除了我必須在Excel電子表格中輸入我的預期數據,然後複製並粘貼到dbfit中並對其進行格式化,因此這是我想要避免的手動步驟。是否有任何自動化工具來執行Java批處理應用程序的功能測試?
是否有任何自動化工具對Java批處理應用程序執行功能測試?
我有將數據寫入數據庫的Java批處理應用程序。我想要一個自動化測試,將預期的輸出與數據庫中的數據進行比較。我使用DBfit來完成這個過程,並且工作得很好,除了我必須在Excel電子表格中輸入我的預期數據,然後複製並粘貼到dbfit中並對其進行格式化,因此這是我想要避免的手動步驟。是否有任何自動化工具來執行Java批處理應用程序的功能測試?
是否有任何自動化工具對Java批處理應用程序執行功能測試?
我用DOS批處理腳本寫了一個DB比較測試工具。該腳本將數據庫模式與其先前的基線進行比較以找出差異。可能會被修改以比較實際的表格數據內容。這是我的代碼,你可能需要稍微修改才能使其工作。顯然,爲了回答你的問題,一個簡單的JUnit或NUnit腳本可以啓動它。
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
ECHO.&ECHO.
ECHO This script will get schema snapshots of all your local MSSQL databases
ECHO and saves them to a directory where this script is ran.
PAUSE
CLS
:: first get timestamp of this script
SETLOCAL
FOR /F "skip=1 tokens=2-4 delims=(-)" %%a IN ('"echo.|date"') DO (
FOR /F "tokens=1-3 delims=/.- " %%A IN ("%DATE:* =%") DO (
SET %%a=%%A&SET %%b=%%B&SET %%c=%%C))
SET /A "yy=10000%yy% %%10000,mm=100%mm% %% 100,dd=100%dd% %% 100"
FOR /F "tokens=1-4 delims=:. " %%A IN ("%time: =0%") DO @SET UNIQUE=%yy%%mm%%dd%-%%A%%B
SET TITLE=atabase schema snapshot
TITLE=D%TITLE%
:: script also supports DBNAME as argument
IF NOT "%1"=="" (
SET DBNAME=%1
%JAVA_HOME%\bin\java.exe -classpath jtds-1.2.4.jar;schemacrawler-8.8.jar;schemacrawler-sqlserver-8.8.jar schemacrawler.tools.sqlserver.Main^
-user=sa -password=password -database=!DBNAME! -schemas=!DBNAME!.dbo.* -port=1433 -host=localhost -table_types=TABLE -command=schema -sortcolumns=true^
-procedures= -infolevel=lint -loglevel=OFF >!DBNAME!_schema_!UNIQUE!.txt
GOTO :ENDSINGLE
)
:: enable this section to run minimized
::IF NOT DEFINED PIL (
:: SET PIL=1
:: START /MIN "" %~0 %1
:: EXIT /B
::)
:BEGIN
ECHO D%TITLE% is running...
ECHO.
MKDIR %UNIQUE%
ECHO Directory %CD%\%UNIQUE% has now
ECHO been created to hold the results of this snapshot.
ECHO.
sqlcmd.exe -E -Slocalhost -h-1 -Q"SET NOCOUNT ON;SELECT name FROM sysdatabases WHERE name NOT IN ('master','tempdb','model','msdb');" >dblist.tmp
FOR /F %%A IN (dblist.tmp) DO (
SET str=%%A
SET str=!str: =!
ECHO !str!>>.\!UNIQUE!\dblist_trimmed.tmp
)
ECHO.&ECHO.&ECHO.
FOR /F %%I IN (.\!UNIQUE!\dblist_trimmed.tmp) DO (
SET DBNAME=%%I
IF NOT "!DBNAME!"=="" (
ECHO. Snapshot: !DBNAME!
%JAVA_HOME%\bin\java.exe -classpath jtds-1.2.4.jar;schemacrawler-8.8.jar;schemacrawler-sqlserver-8.8.jar schemacrawler.tools.sqlserver.Main^
-user=sa -password=password -database=!DBNAME! -schemas=!DBNAME!.dbo.* -port=1433 -host=localhost -table_types=TABLE -command=schema -sortcolumns=true^
-procedures= -infolevel=lint -loglevel=OFF >.\!UNIQUE!\!DBNAME!_schema.txt
)
)
DEL /Q dblist.tmp
GOTO :ENDMULTI
:ENDSINGLE
ECHO Finished processing %1 . Closing in 20 seconds...
GOTO :END
:ENDMULTI
ECHO Finished processing list . Closing in 20 seconds...
:END
ECHO.
FOR /l %%a in (20,-1,1) do (TITLE D%TITLE% -- closing in %%as&ping -n 2 -w 1 127.0.0.1>NUL)
djangofan在他的腳本中使用了SchemaCrawler。 SchemaCrawler生成模式的文本輸出以及數據。文本輸出設計爲通過自動化測試進行驗證。看看SchemaCrawler網站 - http://schemacrawler.sourceforge.net/ –
我真的不這麼認爲。 –