多くの友人が時々私に聞いてきますがあり、春のブートテストプロジェクトは、どのようにどのように展開する、まだ生産では良いものを展開?この記事では、ライン上で、最終的にどのように春ブーツの開発、デバッグ、パッケージング生産をご紹介します。
開発段階の
ユニットテスト
で最も重要なことは、ユニットテストで開発段階では、ユニットテストのためのspringbootサポートが十分に確立されています。
図1に示すように、パッケージはPOMバネブートスタータ試験パッケージの参照を追加
<依存性>
<のgroupId> org.springframework.boot </のgroupId>
<たartifactId>ばねブートスタータ試験</たartifactId>
<スコープ>テスト< /スコープ>
</依存>
2、テスト-
最も単純なHelloWorldの例では、クラスベースのテストヘッドには、追加する必要が:@RunWith(SpringRunner.class)と@SpringBootTest注釈は、試験方法の上部に添加@Test我々は最終的に実行するために右クリック方式で実行することができます。
@RunWith(SpringRunner.class)
@SpringBootTest
パブリッククラスApplicationTests {
@Test
ます。public voidこんにちは(){
System.out.printlnは( "
}
実際の使用は、注入DAO層コードまたはサービスレベルのコードとテスト検証、ばねブートスターターテストは、基本的な使用法の多くを提供するアイテムの通常の使用に応じて、であっても複数種の希コントローラ層試験のためのサポートを増加させることです。
//単純な認証結果セットが正しい
Assert.assertEquals(3、userMapper.getAll()サイズ());
//示唆し、結果セットを確認
Assert.assertTrue( "エラー、正しい戻り値200"、ステータス== 200)がある。
Assert.assertFalse(「エラー、正しい戻り値200」、ステータス= 200); !
導入MockMvc支持層は、コントローラー、次の簡単な例について試験した:
パブリッククラスHelloControlerTests {
プライベートMockMvc MVC;
//初期化実行
@Before
)(公共ボイドセットアップを例外{スロー
ビルド(MVC = MockMvcBuilders.standaloneSetup(新しい新しい()でHelloController));.
}
//正常応答とプリントコントローラが結果を返すことを確認
@Test
getHello(公共ボイド){例外をスロー
mvc.perform(MockMvcRequestBuilders.get( "/こんにちは")。受け入れ(MediaType.APPLICATION_JSON))
.andExpect(MockMvcResultMatchers.status()。ISOK(www.027yeshenghuowang.com/))
.andDo(MockMvcResultHandlers.print())
。andReturn();
}
//正常応答コントローラことを確認し、決意の結果が正しい返し
@Test
公共ボイドtestHello()は、例外{スロー
mvc.perform(MockMvcRequestBuilders.get( "/こんにちは")(MediaType.APPLICATION_JSON)を受け入れます。)
。andExpect(ステータス().isOk(http://xucaizxyl.com/))
.andExpect(コンテンツ()文字列(equalTo( "Hello World"の)http://www.wbjyl.cn/));
}
}
単位それが全体の業績を懸念であるため、テストはコードのユニットテストの習慣を書くのすべての部分を開発するために、コードをあなたの最初の障壁を検証することである、統合後、全体の統合テスト後まで待ってはいけない、コードのバグの底に逃すのは簡単です。
統合テスト
全体的に、後に統合テストへと発展し、直接実行する方法は、プロジェクトを開始することができますが、デバッグの過程で、我々は確かにコードが必要とされると、それぞれが変更した場合は、コードをデバッグするために継続する必要が実行し、Applicationクラスに入学スプリングブートプロジェクトを開始手動でサービスを再起動して春のブーツは非常に親密なサポートに熱い展開を与え、Webプロジェクトをデバッグする際に使用すると便利です、非常に面倒です。
ポンポンの構成は次のものが必要です
。<依存>
<依存>
<groupIdを> org.springframework.boot </ groupIdを>
<たartifactId>ブート春デベロッパーツール<http://www.yigouyule2.cn/ /たartifactId>
<オプション>真</オプション>に
</依存関係>
</依存関係>
<構築する>
<プラグイン>
<プラグイン>
<groupIdを> org.springframework.boot </ groupIdを>
<たartifactId>ブート春のMavenプラグイン- </たartifactId>
<構成>
trueに<フォーク> </フォーク>
<
上記の構成を追加した後、プロジェクトはホットデプロイをサポートする、統合テストは非常に便利です。
生産のオンライン
事実は、私はこの段階では、一般的に2種類に分け、比較的簡単であるべきだと思う; 1が直接実行のjarパッケージにパッケージ化され、もう一方はTomcatサーバーに戦争のパッケージにパッケージ化されています。
標識のjarパッケージには、
プロジェクトを管理するためにMavenを使用している場合は、以下のいずれかのコマンドを実行
ディレクトリ(と同じレベルのpom.xml)でCDプロジェクトを
ためMVNクリーンパッケージ変更
##または以下のコマンドを実行して
パッケージ化されたテストコードを除外した後、##
MVNきれいなパッケージ-Dmaven.test.skip =真の
完全なパッケージのjarパッケージは.jarが、通常はプロジェクト名+バージョンにちなんで名付けられた次のターゲットディレクトリに生成されます後
のjarパッケージのコマンド起動
のjava -jarをターゲット/春-boot-スケジューラ-1.0.0 .jarファイル
限り、コンソールが閉じているように、あなたがサービスにアクセスすることはできません、この方法を。:ここでは、バックグラウンドで実行を開始するための方法を使用して
/春ブーツ・スケジューラのJava -jarをターゲットNOHUP&-1.0.0.jarは
また、スタートアップ異なるプロファイルで読むことを選択することができます
-jar app.jarのjava - DEV = spring.profiles.active
のGradle
のGradleを使用している場合は、次のコマンドは、パッケージ
のGradleのビルド
ここでは、属性セットのスコープを提供そうWARは、最終的に桟橋やTomcatサーバーのように、実行時にAPIクラスを提供しますので、JARパッケージは含まれません形成。 3、登録起動クラス
ServletInitializer.java、相続SpringBootServletInitializerは、configureを覆う()の作成、起動クラスのアプリケーション登録が行きます。時間のWebアプリケーションコンテキストを構築するために外部のWebアプリケーションサーバー、それに追加されたクラスを開始します。
ServletInitializer SpringBootServletInitializer拡張{クラス公開
@Override
SpringApplicationBuilder設定(SpringApplicationBuilderファイルアプリケーション)保護されたが、{
(Application.class)application.sourcesを返す;
}
}
最終的な性能の
MVNきれいなパッケージ-Dmaven.test.skip =真の
ターゲットディレクトリに生成されます。プロジェクト名Tomcatサーバーにコピー+バージョンの.warファイルは、開始します。
Gradleの
Gradleでは、ステップアウトと実質的に同じを使用している場合、build.gradleは、戦争、ブート負スタータースプリングのTomcatのサポートを追加しました:
...
プラグインの適用:「戦争」を
...
依存関係を{
コンパイル( "org.springframework.boot:春ブーツ・スターター・ウェブ:1.4.2.RELEASE"){
除外MyModuleという: "春ブーツ・スターター-Tomcatの"
}
}
...
リユース建設コマンド
Gradleのビルド
WARはなりますビルドの\ libsディレクトリに生成されました。
生産オペレーションとメンテナンスは
値のJVMパラメータを参照してください
javaコマンドがJinfoの来ることができます。
Jinfoの-flags PID
何GC、新しい世代を開始するために、使用後のjarを見て、のバッチ古いメモリは、次のような例は、どのくらいです:
-XX :CICompilerCount = 3 -XX:InitialHeapSize = 234881024 -XX:maxHeapSize = 3743416320 -XX:MaxNewSize = 1247805440 -XX:MinHeapDeltaBytes = 524288 -XX:NewSizeパラメータ= 78118912 -XX:oldSize新しい= 156762112 -XX:+ UseCompressedClassPointers -XX:+ UseCompressedOops -XX:+ UseFastUnorderedTimeStamps -XX:+ UseParallelGC
-XX:CICompilerCount:同時コンパイルの最大数
InitialHeapSizeと-XX:-XX maxHeapSizeは:初期および最大JVMのヒープメモリサイズを指定します。
-XX:MaxNewSize:最大割り当てサイズの新世代のJVMヒープメモリ領域
...
-XX:+ UseParallelGC:パラレルガベージコレクタ使用
多くの友人が時々私に聞いてきますがあり、春のブートテストプロジェクトは、どのようにどのように展開する、まだ生産では良いものを展開?この記事では、ライン上で、最終的にどのように春ブーツの開発、デバッグ、パッケージング生産をご紹介します。
開発段階の
ユニットテスト
で最も重要なことは、ユニットテストで開発段階では、ユニットテストのためのspringbootサポートが十分に確立されています。
図1に示すように、パッケージはPOMバネブートスタータ試験パッケージの参照を追加
<依存性>
<のgroupId> org.springframework.boot </のgroupId>
<たartifactId>ばねブートスタータ試験</たartifactId>
<スコープ>テスト< /スコープ>
</依存>
2、テスト-
最も単純なHelloWorldの例では、クラスベースのテストヘッドには、追加する必要が:@RunWith(SpringRunner.class)と@SpringBootTest注釈は、試験方法の上部に添加@Test我々は最終的に実行するために右クリック方式で実行することができます。
@RunWith(SpringRunner.class)
@SpringBootTest
パブリッククラスApplicationTests {
@Test
ます。public voidこんにちは(){
System.out.printlnは( "
}
実際の使用は、注入DAO層コードまたはサービスレベルのコードとテスト検証、ばねブートスターターテストは、基本的な使用法の多くを提供するアイテムの通常の使用に応じて、であっても複数種の希コントローラ層試験のためのサポートを増加させることです。
//単純な認証結果セットが正しい
Assert.assertEquals(3、userMapper.getAll()サイズ());
//示唆し、結果セットを確認
Assert.assertTrue( "エラー、正しい戻り値200"、ステータス== 200)がある。
Assert.assertFalse(「エラー、正しい戻り値200」、ステータス= 200); !
導入MockMvc支持層は、コントローラー、次の簡単な例について試験した:
パブリッククラスHelloControlerTests {
プライベートMockMvc MVC;
//初期化実行
@Before
)(公共ボイドセットアップを例外{スロー
ビルド(MVC = MockMvcBuilders.standaloneSetup(新しい新しい()でHelloController));.
}
//正常応答とプリントコントローラが結果を返すことを確認
@Test
getHello(公共ボイド){例外をスロー
mvc.perform(MockMvcRequestBuilders.get( "/こんにちは")。受け入れ(MediaType.APPLICATION_JSON))
.andExpect(MockMvcResultMatchers.status()。ISOK(www.027yeshenghuowang.com/))
.andDo(MockMvcResultHandlers.print())
。andReturn();
}
//正常応答コントローラことを確認し、決意の結果が正しい返し
@Test
公共ボイドtestHello()は、例外{スロー
mvc.perform(MockMvcRequestBuilders.get( "/こんにちは")(MediaType.APPLICATION_JSON)を受け入れます。)
。andExpect(ステータス().isOk(http://xucaizxyl.com/))
.andExpect(コンテンツ()文字列(equalTo( "Hello World"の)http://www.wbjyl.cn/));
}
}
単位それが全体の業績を懸念であるため、テストはコードのユニットテストの習慣を書くのすべての部分を開発するために、コードをあなたの最初の障壁を検証することである、統合後、全体の統合テスト後まで待ってはいけない、コードのバグの底に逃すのは簡単です。
統合テスト
全体的に、後に統合テストへと発展し、直接実行する方法は、プロジェクトを開始することができますが、デバッグの過程で、我々は確かにコードが必要とされると、それぞれが変更した場合は、コードをデバッグするために継続する必要が実行し、Applicationクラスに入学スプリングブートプロジェクトを開始手動でサービスを再起動して春のブーツは非常に親密なサポートに熱い展開を与え、Webプロジェクトをデバッグする際に使用すると便利です、非常に面倒です。
ポンポンの構成は次のものが必要です
。<依存>
<依存>
<groupIdを> org.springframework.boot </ groupIdを>
<たartifactId>ブート春デベロッパーツール<http://www.yigouyule2.cn/ /たartifactId>
<オプション>真</オプション>に
</依存関係>
</依存関係>
<構築する>
<プラグイン>
<プラグイン>
<groupIdを> org.springframework.boot </ groupIdを>
<たartifactId>ブート春のMavenプラグイン- </たartifactId>
<構成>
trueに<フォーク> </フォーク>
<
上記の構成を追加した後、プロジェクトはホットデプロイをサポートする、統合テストは非常に便利です。
生産のオンライン
事実は、私はこの段階では、一般的に2種類に分け、比較的簡単であるべきだと思う; 1が直接実行のjarパッケージにパッケージ化され、もう一方はTomcatサーバーに戦争のパッケージにパッケージ化されています。
標識のjarパッケージには、
プロジェクトを管理するためにMavenを使用している場合は、以下のいずれかのコマンドを実行
ディレクトリ(と同じレベルのpom.xml)でCDプロジェクトを
ためMVNクリーンパッケージ変更
##または以下のコマンドを実行して
パッケージ化されたテストコードを除外した後、##
MVNきれいなパッケージ-Dmaven.test.skip =真の
完全なパッケージのjarパッケージは.jarが、通常はプロジェクト名+バージョンにちなんで名付けられた次のターゲットディレクトリに生成されます後
のjarパッケージのコマンド起動
のjava -jarをターゲット/春-boot-スケジューラ-1.0.0 .jarファイル
限り、コンソールが閉じているように、あなたがサービスにアクセスすることはできません、この方法を。:ここでは、バックグラウンドで実行を開始するための方法を使用して
/春ブーツ・スケジューラのJava -jarをターゲットNOHUP&-1.0.0.jarは
また、スタートアップ異なるプロファイルで読むことを選択することができます
-jar app.jarのjava - DEV = spring.profiles.active
のGradle
のGradleを使用している場合は、次のコマンドは、パッケージ
のGradleのビルド
ここでは、属性セットのスコープを提供そうWARは、最終的に桟橋やTomcatサーバーのように、実行時にAPIクラスを提供しますので、JARパッケージは含まれません形成。 3、登録起動クラス
ServletInitializer.java、相続SpringBootServletInitializerは、configureを覆う()の作成、起動クラスのアプリケーション登録が行きます。時間のWebアプリケーションコンテキストを構築するために外部のWebアプリケーションサーバー、それに追加されたクラスを開始します。
ServletInitializer SpringBootServletInitializer拡張{クラス公開
@Override
SpringApplicationBuilder設定(SpringApplicationBuilderファイルアプリケーション)保護されたが、{
(Application.class)application.sourcesを返す;
}
}
最終的な性能の
MVNきれいなパッケージ-Dmaven.test.skip =真の
ターゲットディレクトリに生成されます。プロジェクト名Tomcatサーバーにコピー+バージョンの.warファイルは、開始します。
Gradleの
Gradleでは、ステップアウトと実質的に同じを使用している場合、build.gradleは、戦争、ブート負スタータースプリングのTomcatのサポートを追加しました:
...
プラグインの適用:「戦争」を
...
依存関係を{
コンパイル( "org.springframework.boot:春ブーツ・スターター・ウェブ:1.4.2.RELEASE"){
除外MyModuleという: "春ブーツ・スターター-Tomcatの"
}
}
...
リユース建設コマンド
Gradleのビルド
WARはなりますビルドの\ libsディレクトリに生成されました。
生産オペレーションとメンテナンスは
値のJVMパラメータを参照してください
javaコマンドがJinfoの来ることができます。
Jinfoの-flags PID
何GC、新しい世代を開始するために、使用後のjarを見て、のバッチ古いメモリは、次のような例は、どのくらいです:
-XX :CICompilerCount = 3 -XX:InitialHeapSize = 234881024 -XX:maxHeapSize = 3743416320 -XX:MaxNewSize = 1247805440 -XX:MinHeapDeltaBytes = 524288 -XX:NewSizeパラメータ= 78118912 -XX:oldSize新しい= 156762112 -XX:+ UseCompressedClassPointers -XX:+ UseCompressedOops -XX:+ UseFastUnorderedTimeStamps -XX:+ UseParallelGC
-XX:CICompilerCount:同時コンパイルの最大数
InitialHeapSizeと-XX:-XX maxHeapSizeは:初期および最大JVMのヒープメモリサイズを指定します。
-XX:MaxNewSize:最大割り当てサイズの新世代のJVMヒープメモリ領域
...
-XX:+ UseParallelGC:パラレルガベージコレクタ使用