2012-09-26 21 views
1

我有将数据写入数据库的Java批处理应用程序。我想要一个自动化测试,将预期的输出与数据库中的数据进行比较。我使用DBfit来完成这个过程,并且工作得很好,除了我必须在Excel电子表格中输入我的预期数据,然后复制并粘贴到dbfit中并对其进行格式化,因此这是我想要避免的手动步骤。是否有任何自动化工具来执行Java批处理应用程序的功能测试?

是否有任何自动化工具对Java批处理应用程序执行功能测试?

+0

我真的不这么认为。 –

回答

1

我用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) 
+0

djangofan在他的脚本中使用了SchemaCrawler。 SchemaCrawler生成模式的文本输出以及数据。文本输出设计为通过自动化测试进行验证。看看SchemaCrawler网站 - http://schemacrawler.sourceforge.net/ –

相关问题