春ブーツ道路プライマー(7)とログ管理ユニットテスト---

免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
このリンク: https://blog.csdn.net/Geffin/article/details/100025088

1スプリングブート単体テスト

春ブーツは、テストのために私たちを支援するためにノート@SpringBootTest提供します。

まず、依存性を導入しました

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

そして、サービスおよびその実装を作成

public interface HelloService {

	void hello();
}
@Service
public class HelloServiceImpl implements HelloService{

	@Override
	public void hello() {
		System.out.println("HELLO");
	}

}

その後、我々はテストクラスを実装します

@RunWith(SpringRunner.class)
@SpringBootTest(classes = {TestApplication.class})
public class MyTest {

	@Autowired
	HelloService helloService;
	
	@Test
	public void test() {
		helloService.hello();
		System.out.println("my first test");
	}
	
}

結果は以下の通りであります
ここに画像を挿入説明

コントローラは、模擬テストモードを使用するための手段

実際には、@SpringBootTestが実際にWebサービスを起動しないで使用して、我々は、コントローラユニット、それをテストする方法をすべきですか?実際には、春には、それをチェックアウトし、我々のテストユニットコントローラ用MockMvcを提供してきました!

私たちは、コントローラを持っています

@RestController
public class HelloController {

	@RequestMapping("/hello")
	public String hello() {
		return "hello everybody!";
	}
}

テストクラスを実装

@RunWith(SpringRunner.class)
@SpringBootTest(classes = {TestApplication.class})
@AutoConfigureMockMvc
public class MyTest {

	@Autowired
	private MockMvc mvc;
	
	@Test
	public void test() throws Exception {
		this.mvc.perform(get("/hello")).andExpect(status().isOk())
        .andDo(MockMvcResultHandlers.print());
	}
	
}

ここに画像を挿入説明
これは、リクエストによって成功を発見しました

ログ管理における2春ブーツ

春ブーツのデフォルト設定では、共通ログのサポートを提供します。デフォルトでは、春ブーツSLF4J + Logbackは、ログインして、INFOレベルのコンソールにするために使用されます。

SLF4Jログがファサードで、フレームは、インターフェースとして見ることができる、特定の実装はLog4jの、Log4j2、Logback等のようなロギングフレームワークを完了するのに似ているが、特定の実装を提供しません。

ログ管理が依存しています

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-logging</artifactId>
</dependency>

私たちのこれまでの経験によると、この依存性は、それのpom.xmlに参加する必要はありませんか?春ブート・スターターは、すでに春・ブート・スターター・ロギングを含んでいるので実際には、そうではありません。

ここでのコード例を通じて:

@RunWith(SpringRunner.class)
@SpringBootTest(classes = {TestApplication.class})
public class MyTest {

	private final Logger logger = LoggerFactory.getLogger(this.getClass());
	
	@Test
	public void test(){
		logger.info("my first time");
	}
	
}

実行可能な結果は、
ここに画像を挿入説明
ログがすでに閉鎖されていることを証明します。

ログイン関連のプロパティを

ファイル出力

デフォルトでは、春ブーツコンソールにではなく、ログファイルへのログ出力。あなたがコンソール出力以外のログファイルを書きたいのであれば、application.propertiesにlogging.fileまたはlogging.pathプロパティを設定する必要があります。

設定ファイルlogging.file属性は、絶対または相対パスであってもよいです。例えば:

# 日志配置
logging.file = log/test.log

ここに画像を挿入説明
ここに画像を挿入説明
カレントディレクトリで見つけることができますログファイルを生成しません。

logging.pathプロパティは、たとえば、ディレクトリ内spring.logファイルを作成されたディレクトリを設定するために使用され、ログに書き込まれます。

# 日志配置
logging.path = log/test-01

ここに画像を挿入説明
ログファイルの生成spring.log /ログイン/テスト-01フォルダをで見つけるのは簡単。

両方ではない、だけlogging.file有効になり、使用する必要があり、注意してください。

レベルコントロール

私たちは、ログレベルがTARCE <DEBUG <INFO <<ERROR <FATAL WARNである私たちはTARCEようINFOに設定したレベル、およびデバッグログを記録する場合、例えば、私たちは目に見えないことを知っています。

春のブートデフォルトのレベルは次のコード行を追加し、我々は変更したい場合はWARN、INFOです。

logging.level.root = warn

私はつまり、パッケージに指定された適切なログレベルを使用して、プロジェクトの下のすべてのログは、もちろん、我々はまた、パッケージレベルを使用することができることを示す、ルートレベルを使用します。

実行して、どのように空を見ましたか?
ここに画像を挿入説明
実際には、これは、ログレベルは、INFOレベルのログがそれほどまで表示されませんWARNに設定されている印刷することによるものです。

まあ、私は今の需要を持って、edu.szu.test.MyTestの下で必要なログレベルをINFOに設定され、どのように達成するために?実際には、application.propertiesにコードの行を追加します。

logging.level.root = warn
logging.level.edu.szu.test.MyTest = info

今、私たちは次のように見つけ、それを実行
ここに画像を挿入説明
に成功INFOに変更edu.szu.test.MyTest下のログレベルを示しました。

ログフォーマット

コンソール出力のカスタムログ形式

logging.pattern.console = %d{yyyy/MM/dd-HH:mm:ss} [%thread] %-5level %logger- %msg%n 

ログファイルに出力形式をカスタマイズします

logging.pattern.file = %d{yyyy/MM/dd-HH:mm} [%thread] %-5level %logger- %msg%n

おすすめ

転載: blog.csdn.net/Geffin/article/details/100025088