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

是否有任何自动化工具来执行java批处理应用程序的功能测试?,java,testing,batch-file,dbfit,Java,Testing,Batch File,Dbfit,我有Java批处理应用程序,它将数据写入数据库。我想有一个自动测试,将比较预期的输出与数据库中的数据。我使用DBfit来完成这个过程,效果非常好,只是我必须在excel电子表格中输入预期数据,然后复制并粘贴到DBfit中并格式化,所以这是我想要避免的手动步骤 是否有任何自动化工具来执行java批处理应用程序的功能测试 我使用DOS批处理脚本编写了一个DB比较测试工具。此脚本将数据库架构与其以前的基线进行比较,以找出差异。可以修改以比较实际的表数据内容。这是我的代码,您可能需要稍微修改一下以使其正

我有Java批处理应用程序,它将数据写入数据库。我想有一个自动测试,将比较预期的输出与数据库中的数据。我使用DBfit来完成这个过程,效果非常好,只是我必须在excel电子表格中输入预期数据,然后复制并粘贴到DBfit中并格式化,所以这是我想要避免的手动步骤


是否有任何自动化工具来执行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)

我使用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网站——djangofan正在脚本中使用SchemaCrawler。SchemaCrawler生成模式的文本输出以及数据。文本输出设计为通过自动测试进行差异验证。请查看SchemaCrawler网站-