2016-09-19 2 views
0

Мы начали использовать инфраструктуру интеграции цитрусовых для нашего тестирования API. Я пытаюсь запустить запрос SQL INSERT в базе данных oracle.Инструкция INSERT не работает с инфраструктурой интеграции Citrus

Если мы запустим SQL, у которого есть ключевое слово select, он просто работает нормально, но если мы хотим вставить данные, он выдает нулевую указатель exception.stack trace ниже. Может кто-нибудь, пожалуйста, посоветуйте.

com.consol.citrus.exceptions.TestCaseFailedException: Тестовый случай не удалось

at com.consol.citrus.TestCase.executeAction(TestCase.java:221) 
at com.consol.citrus.dsl.runner.DefaultTestRunner.run(DefaultTestRunner.java:189) 
at com.consol.citrus.dsl.runner.DefaultTestRunner.query(DefaultTestRunner.java:249) 
at com.consol.citrus.dsl.testng.TestNGCitrusTestRunner.query(TestNGCitrusTestRunner.java:170) 
at com.consol.citrus.samples.DomainAPITest.sqlPMTest(DomainAPITest.java:37) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:498) 
at org.springframework.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:216) 
at com.consol.citrus.dsl.testng.TestNGCitrusTest.invokeTestMethod(TestNGCitrusTest.java:130) 
at com.consol.citrus.dsl.testng.TestNGCitrusTest.run(TestNGCitrusTest.java:100) 
at com.consol.citrus.dsl.testng.TestNGCitrusTest.run(TestNGCitrusTest.java:58) 
at org.testng.internal.MethodInvocationHelper.invokeHookable(MethodInvocationHelper.java:208) 
at org.testng.internal.Invoker.invokeMethod(Invoker.java:635) 
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:816) 
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1124) 
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125) 
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:108) 
at org.testng.TestRunner.privateRun(TestRunner.java:774) 
at org.testng.TestRunner.run(TestRunner.java:624) 
at org.testng.SuiteRunner.runTest(SuiteRunner.java:359) 
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:354) 
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:312) 
at org.testng.SuiteRunner.run(SuiteRunner.java:261) 
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) 
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) 
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1215) 
at org.testng.TestNG.runSuitesLocally(TestNG.java:1140) 
at org.testng.TestNG.run(TestNG.java:1048) 
at org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:72) 
at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:124) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:498) 
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147) 

Вызванный: com.consol.citrus.exceptions.CitrusRuntimeException: Отсутствует ключевое слово ЗЕЬЕСТ в заявление: INSERT INTO CN_RATE_EXHIBIT (ID, RATE_EXHIBIT_CODE , DS, DSL, STATUS, RECIPROCAL_IND, START_DATE, END_DATE, TERM_REASON) (seqCN_RATE_EXHIBIT.nextval, 'Citrus_Inte_RE_Code', 'Citrus_Inte_RE_Code_DS', 'Citrus_Inte_RE_CodeDSL', null, 'Y', to_date ('01 -JUN-16 ',' DD-MON-RR '), to_date ('01 -JAN-4000', 'DD-MON-RR'), 'O') в com.consol.citrus.actions.ExecuteSQLQueryAction.validateSqlStatement (ExecuteSQLQueryAction.java:266) at com.consol.citru s.actions.ExecuteSQLQueryAction.doExecute (ExecuteSQLQueryAction.java:84) на com.consol.citrus.actions.AbstractDatabaseConnectingTestAction.execute (AbstractDatabaseConnectingTestAction.java:62) на com.consol.citrus.TestCase.executeAction (TestCase.java: 214)

ответ

0

Информация о трассировке стека сообщает мне, что Citrus пытается обработать инструкцию INSERT в виде SQL-запроса (SELECT). Это происходит, когда вы смешиваете инструкции INSERT и SELECT в одном тестовом действии SQL.

Отделите запросы запроса (SELECT) от всех других операторов, таких как INSERT, UPDATE, DELETE. Просто используйте отдельные тестовые действия в своем тесте. Также не допускается использование выражений проверки в тесте SQL-теста при использовании операторов, отличных от SELECT.

Citrus обрабатывает инструкции SELECT по-разному с другими.