私は3つのユニットテストが含まれている春ブーツで書かれたJUnitテストクラスを持っている:スプリングブートアプリケーションのJUnitテストごとにポート番号を解放する方法は?
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
@ContextConfiguration
@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)
public class AppclaitionTest {
@BeforeClass
public static void initialize(){
System.out.println(">>>>>>>Intialization Part!");
}
@Test
public void test1(){
System.out.println(">>>>>>>Appcliation Test Started! - Test 1");
Application.main(new String[]{});
System.out.println(">>>>>>>Appcliation Test Ended! - Test 1");
}
@Test
public void test2(){
System.out.println(">>>>>>>Appcliation Test Started! - Test 2");
Application.main(new String[]{});
System.out.println(">>>>>>>Appcliation Test Ended! - Test 2");
}
@Test
public void test3(){
System.out.println(">>>>>>>Appcliation Test Started! - Test 3");
Application.main(new String[]{});
System.out.println(">>>>>>>Appcliation Test Ended! - Test 3");
}
@AfterClass
public static void destory(){
System.out.println(">>>>>>>Destroy Part!");
}
}
最初のテストの後に実行すると、私は例外の下に取得しています:
java.net.BindException: Address already in use: bind
アプリケーションコンテキストもののリリース、それはポート番号を解放していない、したがって私は上記の例外を取得しています。
各ユニットテストの前にポート番号を閉じる方法はありますか?
SpringApplicationBuilder以前のバージョン(1.1.4)には、アプリケーションをビルドして起動するビルドメソッドが含まれていません。したがって、コードを次のように変更しました。 ソリューション1: context = new SpringApplicationBuilder(Application.class).web(false).run(); 解決方法2: SpringApplicationBuilder app =新しいSpringApplicationBuilder(Application.class); app.sources(Application.class); app.web(false); context = app。run(); いずれの場合も、アプリケーションが起動していません。 –