Есть ли какой-либо автоматизированный инструмент для выполнения функционального тестирования для пакетного приложения Java?

У меня есть пакетные приложения Java, которые записывают данные в базу данных. Я хочу провести автоматический тест, который будет сравнивать ожидаемый результат с данными в базе данных. Я использовал DBfit для выполнения этой процедуры и работает очень хорошо, за исключением того, что мне нужно ввести свои ожидаемые данные в таблицу Excel, а затем скопировать и вставить в dbfit и отформатировать их, так что это ручной шаг, которого я хочу избежать.

Существует ли какой-либо автоматизированный инструмент для выполнения функционального тестирования для пакетных приложений Java?

1 ответ

Я написал тестовый инструмент сравнения БД, используя пакетный скрипт DOS. Этот скрипт сравнивает схему базы данных с ее предыдущей базовой линией, чтобы найти различия. Может быть в состоянии изменить, чтобы сравнить фактическое содержание данных таблицы. Вот мой код, который вам может потребоваться немного изменить, чтобы он работал. Очевидно, чтобы ответить на ваш вопрос, простой скрипт 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)
Другие вопросы по тегам