Я пытаюсь выполнить модульное тестирование некоторого устаревшего кода, чтобы убедиться, что новая функция не нарушает старые функции.К сожалению, этот унаследованный код имеет некоторые плохие конструктивные особенности (циклические зависимости, много переменных, плохой стиль и т. Д.).Кроме того, этот унаследованный код находится в кодовой базе, которая будет полностью «выброшена» в ближайшее время, поэтому тратить много времени на его реорганизацию, очистку и обновление - это не лучшее использование времени.Наконец, мы используем старую версию Netty (3.10.5.Final) и не можем обновиться.
Мне пришлось смоделировать множество переменных и интерфейсов, чтобы заставить код даже запустить модульиспытания без бомбардировок.Последнее препятствие, с которым я сталкиваюсь, состоит в том, что эта строка кода всегда выдает нулевое исключение:
if (!HttpHeaders.isKeepAlive(request)) {
Я пытался заполнить объект HttpHeaders, убедиться, что мои запросы и ответы имеют правильные заголовки, иЯ даже пытался смоделировать вызов метода:
when(HttpHeaders.isKeepAlive(any())).thenReturn(true);
Но ничего не работает.Фактически, когда я высмеиваю вызов метода, он также выдает нулевое исключение.
Однако другие вызовы этого объекта работают нормально, например:
HttpHeaders.addHeader(httpResponse, "keepAlive", true);
Я не знаю, как именноЗаполняется объект HttpHeaders, как имитировать вызов .isKeepAlive или почему эта функция возвращает нулевое исключение.Будем благодарны за любые идеи или мысли.
Редактировать:
Добавление запрошенной трассировки стека
java.lang.NullPointerException
at org.jboss.netty.handler.codec.http.HttpHeaders.isKeepAlive(HttpHeaders.java:553)
at com.apifest.BackEndResponseListener.responseReceived(BackEndResponseListener.java:93)
at com.apifest.BackEndResponseListenerTest.NewTest_OK_LogsSuccessful(BackEndResponseListenerTest.java:117)
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.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:108)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:661)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:869)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1193)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:129)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:112)
at org.testng.TestRunner.privateRun(TestRunner.java:756)
at org.testng.TestRunner.run(TestRunner.java:610)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:380)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:375)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:340)
at org.testng.SuiteRunner.run(SuiteRunner.java:289)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1306)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1231)
at org.testng.TestNG.runSuites(TestNG.java:1146)
at org.testng.TestNG.run(TestNG.java:1117)
at org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:72)
at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:123)