当前位置: 首页 > 知识库问答 >
问题:

Spring Boot应用程序通过JUnit测试启动,但无法通过URL访问

范鸿
2023-03-14

我有一个JUnit测试,它启动了我的spring boot应用程序(Application.java)。

@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
public class AppclaitionTest {

    @Test
    public void contextLoads(){
        Application.main(new String[]{});
    }
}

如果我运行JUnit测试,应用程序可以成功启动,但是不能通过url访问

应用程序日志:

2017-06-16 12:18:07.918  INFO 207028 --- [           main] com.chandu.test.AppclaitionTest          : Started AppclaitionTest in 1.927 seconds (JVM running for 2.458)

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v1.5.3.RELEASE)

2017-06-16 12:18:08.012  INFO 207028 --- [           main] com.test.app.Application                 : Starting Application on IVL-WS39 with PID 207028 (started by Bhanuchandar.Challa in D:\Jars\SpringJDBCMySQL)
2017-06-16 12:18:08.012  INFO 207028 --- [           main] com.test.app.Application                 : No active profile set, falling back to default profiles: default
2017-06-16 12:18:08.012  INFO 207028 --- [           main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@3f1ddac2: startup date [Fri Jun 16 12:18:08 IST 2017]; root of context hierarchy
2017-06-16 12:18:08.402  INFO 207028 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8080 (http)
2017-06-16 12:18:08.417  INFO 207028 --- [           main] o.apache.catalina.core.StandardService   : Starting service Tomcat
2017-06-16 12:18:08.417  INFO 207028 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/8.5.14
2017-06-16 12:18:08.526  INFO 207028 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2017-06-16 12:18:08.526  INFO 207028 --- [ost-startStop-1] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 514 ms
2017-06-16 12:18:08.636  INFO 207028 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean  : Mapping servlet: 'dispatcherServlet' to [/]
2017-06-16 12:18:08.636  INFO 207028 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'characterEncodingFilter' to: [/*]
2017-06-16 12:18:08.636  INFO 207028 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
2017-06-16 12:18:08.636  INFO 207028 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'httpPutFormContentFilter' to: [/*]
2017-06-16 12:18:08.636  INFO 207028 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'requestContextFilter' to: [/*]
2017-06-16 12:18:08.933  INFO 207028 --- [           main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@3f1ddac2: startup date [Fri Jun 16 12:18:08 IST 2017]; root of context hierarchy
2017-06-16 12:18:08.933  INFO 207028 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/getRowCount]}" onto public java.lang.Integer com.test.app.controller.TestController.getRowCount(java.lang.String)
2017-06-16 12:18:08.949  INFO 207028 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/process]}" onto public java.lang.String com.test.app.controller.TestController.processRequest()
2017-06-16 12:18:08.949  INFO 207028 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2017-06-16 12:18:08.949  INFO 207028 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2017-06-16 12:18:08.964  INFO 207028 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2017-06-16 12:18:08.964  INFO 207028 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2017-06-16 12:18:08.980  INFO 207028 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2017-06-16 12:18:09.105  INFO 207028 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Registering beans for JMX exposure on startup
2017-06-16 12:18:09.151  INFO 207028 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2017-06-16 12:18:09.151  INFO 207028 --- [           main] com.test.app.Application                 : Started Application in 1.186 seconds (JVM running for 3.689)

当我试图通过url访问应用程序时http://localhost:8080/process该网站称无法访问。

共有2个答案

宓文斌
2023-03-14

默认情况下,在@SpringBootTest注释中,字段“web环境”设置为“Web环境”.MOCK
因此,“Tomcat”不会启动。

您可以将此字段设置为WebEnvironment.DEFINED_PORT/RANDOM_PORT。在此之后,雄猫将运行。

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
public class MyTestClass {
...
...
...
}
乐正穆冉
2023-03-14

你为什么要做这样的事?这应该是一个单元测试,测试流程应该如下:启动应用程序-

启动应用程序:@RunWith(SpringRunner.class)为您执行此操作,无需手动启动。

关闭应用程序:在测试类结束时,Spring boot会为您执行此操作(这就是您无法在浏览器中访问应用程序的原因)

要得到更多的帮助,请在这里看我的回答:如何测试(rest) enpoints

 类似资料:
  • 我尝试使用本地主机url访问我的endpoint——http://localhost:8080/这是我的Application.java文件 这是我的终点 我试着用这个网址http://localhost:8080/all

  • 在过去的两天里,我正在开发的应用程序在logcat中显示为“死了”,当我试图通过Android Studio中的run按钮启动该应用程序时,一切看起来都很好,只是该应用程序从未启动,并且在Android Studio中没有留下任何错误消息,除了“死了”。知道这是什么吗? 更新:我已经可以从logcat中移除[死亡]的东西了,方法是: 从设备中删除应用程序 重新启动设备(不应该是这样,因为它在发生之

  • 我有一个应用类 我有控制器课 并且,我想为Application test编写一个测试用例,以确保创建的实例类型为HelloController 但是,我在自动连接 hello控制器变量时遇到错误(找不到 hello 控制器类型的 bean)。根据我的理解,@SpringBootTest应该创建上下文并返回一个实例。我们不需要编写任何上下文 xml 或使用任何注释Config 类来获取实例。缺少了

  • 我有一个简单的类,它有名字、姓氏和电子邮件我将电子邮件标记为 *编辑我的问题似乎不是很清楚我的模型有一个名为email的字段,它是唯一的,所以我希望当我插入一个具有相同email的对象时,DB应该拒绝它。 为了测试它,我做了一个简单的测试,用电子邮件持久化一个对象,然后用相同的电子邮件创建另一个对象。问题出在JUNIT上,因为测试由于而失败,正如预期的那样,但是测试是红色的。

  • 使用spring-boot时,一切工作都很好。尽管如此,在spring-boot中已删除了注释和。我试图将代码重构为新版本,但我做不到。对于以下测试,我的应用程序在测试之前没有启动,http://localhost:8080返回404: 如何重构测试以使其在Spring-Boot1.5中工作?

  • 首先请原谅我可能的无知,专业的做事方式对我来说很新鲜,如果有什么我没有提到的,请告诉我,我会尽力给你你需要的信息。。。 所以我试图用maven在Eclipse中构建我的webapp,我有一个测试套件 这很好,当我右键单击并以Junit test运行测试时,所有测试都通过了。 当我以Maven build的形式运行它,并以打包一系列测试为目标时,失败了??? 我的maven surefire插件配置