Java 如何从junit测试调用SpringBoot应用程序的主方法并防止其停止

Java 如何从junit测试调用SpringBoot应用程序的主方法并防止其停止,java,spring-boot,junit,Java,Spring Boot,Junit,我有一个非常简单的SpringBoot应用程序,它在localhost:8085上公开了一个rest端点 @SpringBootApplication public class App { public static void main(String[] args) { SpringApplication.run(App.class, args); System.out.println("The gOaT"); } } 我想在jun

我有一个非常简单的SpringBoot应用程序,它在localhost:8085上公开了一个rest端点

@SpringBootApplication
public class App 
{
    public static void main(String[] args)
    {
        SpringApplication.run(App.class, args);
        System.out.println("The gOaT");
    }
}


我想在junit测试中启动我的应用程序。这成功地做到了:

public class SomeTest extends TestCase {

    @Test
    public void testOne() {
        String[] args = new String[0];
        App.main(args);
        assertTrue(true);
    }

}
问题是,一旦单元测试初始化应用程序,它也会立即将其关闭(我认为这是因为单元测试本身终止):


如何运行此测试、启动应用程序,然后防止应用程序关闭?

用以下注释您的测试类:

@RunWith(SpringRunner.class)
@SpringBootTest(classes = App.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)

它会将应用程序加载到上下文中,并保持应用程序运行

为测试类添加以下注释:

@RunWith(SpringRunner.class)
@SpringBootTest(classes = App.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)

它会将应用程序加载到上下文中,并保持应用程序运行

为了测试restapi,您需要mockmvc或类似的框架。 用

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
我有一个可能有助于您启动的示例项目:

要测试RESTAPI,您需要mockmvc或类似的框架。 用

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
我有一个可能有助于您启动的示例项目:

你为什么要完成这样的事情?你不能用弹簧测试吗?为什么你需要完成这样的事情?你不能用弹簧测试吗?