差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
| study:java:powermock:integation [2020/05/20 05:53] – [@Listeners] banana | study:java:powermock:integation [2025/02/07 02:28] (現在) – [log4j設定] banana | ||
|---|---|---|---|
| 行 7: | 行 7: | ||
| ^key^value^comment^ | ^key^value^comment^ | ||
| |project.build.sourceEncoding|UTF-8| | | |project.build.sourceEncoding|UTF-8| | | ||
| - | |java.version|1.7| | | + | |java.version|1.8| | |
| - | |powermock.version|1.7.4| | | + | |powermock.version|2.0.9| | |
| + | |log4j.version|2.17.1| | | ||
| Mavenプロジェクトのplugin設定を以下に示す。 | Mavenプロジェクトのplugin設定を以下に示す。 | ||
| 行 15: | 行 16: | ||
| < | < | ||
| < | < | ||
| - | < | + | < |
| < | < | ||
| < | < | ||
| 行 27: | 行 28: | ||
| ^groupId^artifactId^version^scope^ | ^groupId^artifactId^version^scope^ | ||
| |org.powermock|powermock-module-testng|${powermock.version}|test| | |org.powermock|powermock-module-testng|${powermock.version}|test| | ||
| - | |org.powermock|powermock-api-mockito|${powermock.version}|test| | + | |org.powermock|powermock-api-mockito2|${powermock.version}|test| |
| その他、必要モジュールを導入するが、基本的に入れるモジュールを以下に示す。 | その他、必要モジュールを導入するが、基本的に入れるモジュールを以下に示す。 | ||
| ^groupId^artifactId^version^scope^ | ^groupId^artifactId^version^scope^ | ||
| - | |org.dbunit|dbunit|2.5.4| | | + | |org.dbunit|dbunit|2.7.2| | |
| - | |org.apache.commons|commons-lang3|3.7| | | + | |org.apache.commons|commons-lang3|3.12| | |
| - | |org.apache.poi|poi|3.17| | | + | |org.apache.poi|poi|5.1.0| | |
| - | |org.apache.poi|poi-ooxml|3.17| | | + | |org.apache.poi|poi-ooxml|5.1.0| | |
| - | |commons-io|commons-io|2.1| | | + | |commons-io|commons-io|2.11.0| | |
| - | |com.google.guava|guava|19.0| | | + | |
| |commons-beanutils|commons-beanutils|1.9.3| | | |commons-beanutils|commons-beanutils|1.9.3| | | ||
| - | |com.google.inject|guice|4.2.2| | | + | |com.google.inject|guice|5.0.1| | |
| - | |ch.qos.logback|logback-classic|1.2.3|test| | + | |org.apache.logging.log4j|log4j-1.2-api|${log4j.version}|test| |
| + | |org.apache.logging.log4j|log4j-api|${log4j.version}|test| | ||
| + | |org.apache.logging.log4j|log4j-core|${log4j.version}|test| | ||
| 行 47: | 行 49: | ||
| <code java> | <code java> | ||
| @Listeners({CustomTestMethodListener.class}) | @Listeners({CustomTestMethodListener.class}) | ||
| - | @MockPolicy(Slf4jMockPolicy.class) | + | @PowerMockIgnore({" |
| - | @PowerMockIgnore({" | + | |
| " | " | ||
| public abstract class AbstractCustomTestCase extends PowerMockTestCase { | public abstract class AbstractCustomTestCase extends PowerMockTestCase { | ||
| 行 71: | 行 72: | ||
| @BeforeClass | @BeforeClass | ||
| protected void setUp() throws Exception { | protected void setUp() throws Exception { | ||
| + | setUpLog4j(); | ||
| setUpDbunitTester(); | setUpDbunitTester(); | ||
| prepareSpecific(); | prepareSpecific(); | ||
| 行 85: | 行 87: | ||
| protected void tearDownHook() throws Exception { | protected void tearDownHook() throws Exception { | ||
| - | //nop | + | //NOP |
| } | } | ||
| 行 92: | 行 94: | ||
| // Creates a new JdbcDatabaseTester | // Creates a new JdbcDatabaseTester | ||
| private void setUpDbunitTester() throws Exception { | private void setUpDbunitTester() throws Exception { | ||
| - | DataSource _ds = DataSourceLocator.getDataSource(DBConstants.NPDS); | + | DataSource _ds = DataSourceLocator.getDataSource(DBConstants.EPADS); |
| databaseTester = new DataSourceDatabaseTester(_ds); | databaseTester = new DataSourceDatabaseTester(_ds); | ||
| 行 100: | 行 102: | ||
| DatabaseConfig _config = databaseTester.getConnection().getConfig(); | DatabaseConfig _config = databaseTester.getConnection().getConfig(); | ||
| _config.setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY, | _config.setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY, | ||
| + | } | ||
| + | |||
| + | //Enable Log4j 1.x bridge | ||
| + | private void setUpLog4j() { | ||
| + | System.setProperty(" | ||
| } | } | ||
| 行 124: | 行 131: | ||
| if (method.isTestMethod()) { | if (method.isTestMethod()) { | ||
| System.out.println(" | System.out.println(" | ||
| - | //paramerters | + | //parameters |
| System.out.println(" | System.out.println(" | ||
| } | } | ||
| 行 133: | 行 140: | ||
| */ | */ | ||
| public void afterInvocation(IInvokedMethod method, ITestResult testResult) { | public void afterInvocation(IInvokedMethod method, ITestResult testResult) { | ||
| - | // nop | + | //NOP |
| } | } | ||
| 行 139: | 行 146: | ||
| </ | </ | ||
| - | ==== @MockPolicy ==== | + | ===== @MockPolicy |
| Powermockをlog4j又はslf4jと一緒に使う場合、次のエラーが発生することがある。 | Powermockをlog4j又はslf4jと一緒に使う場合、次のエラーが発生することがある。 | ||
| < | < | ||
| 行 152: | 行 159: | ||
| Slf4jとLog4jを併用する場合は、**%%@MockPolicy(Slf4jMockPolicy.class)%%**を指定する。 | Slf4jとLog4jを併用する場合は、**%%@MockPolicy(Slf4jMockPolicy.class)%%**を指定する。 | ||
| - | ==== @PowerMockIgnore ==== | + | ===== @PowerMockIgnore |
| %%TestNG%%と%%PowerMock%%を同時に使うと、%%TestNG%%の%%ClassLoader%%によりloadingされたクラスが、%%PowerMocker%%の%%ClassLoader%%にloadingされエラーになることがある。\\ | %%TestNG%%と%%PowerMock%%を同時に使うと、%%TestNG%%の%%ClassLoader%%によりloadingされたクラスが、%%PowerMocker%%の%%ClassLoader%%にloadingされエラーになることがある。\\ | ||
| - | それを回避させるために、用意されているのが%%@PowerMockIgnore%% annotationになる。 | + | それを回避するために、用意されているのが%%@PowerMockIgnore%% annotationになる。 |
| サンプルのParentクラスで指定した設定の意味を次に示す。 | サンプルのParentクラスで指定した設定の意味を次に示す。 | ||
| 行 160: | 行 167: | ||
| |javax.management.*|DBUnitと統合| | |javax.management.*|DBUnitと統合| | ||
| |javax.net.ssl.*|DBUnitと統合| | |javax.net.ssl.*|DBUnitと統合| | ||
| - | |javax.security.auth.x500.X500Principal|DBUnitと統合| | + | |javax.security.auth.x500.*|DBUnitと統合| |
| |oracle.jdbc.*|Oracle接続| | |oracle.jdbc.*|Oracle接続| | ||
| |javax.sql.*|SQL Server接続| | |javax.sql.*|SQL Server接続| | ||
| |com.microsoft.sqlserver.*|SQL Server接続| | |com.microsoft.sqlserver.*|SQL Server接続| | ||
| + | |||
| + | ====== log4j設定 ====== | ||
| + | log4j-2.xのlogging設定ファイルとしてlog4j2-test.xmlをsrc/ | ||
| + | 設定例を以下に示す。 | ||
| + | < | ||
| + | |||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | <Console name=" | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | fileName=" | ||
| + | filePattern=" | ||
| + | > | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | < | ||
| + | fileName=" | ||
| + | filePattern=" | ||
| + | > | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | < | ||
| + | <!-- rootLoggerへ伝播を防ぐため、additivity=false指定 | ||
| + | <Logger name=" | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | <!-- 基本loggingレベル --> | ||
| + | <Root level=" | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | </ | ||
| + | |||
| + | ====== logback.xml設定 ====== | ||
| + | logback-classicをloggingとして使う場合の設定例を以下に示します。 | ||
| + | < | ||
| + | <?xml version=" | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | <!-- コンソール出力 --> | ||
| + | < | ||
| + | <encoder class=" | ||
| + | < | ||
| + | %d{yyyy-MM-dd HH: | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | <!-- | ||
| + | ファイルへ出力 | ||
| + | --> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | <encoder class=" | ||
| + | < | ||
| + | %d{yyyy-MM-dd HH: | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | <logger name=" | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | <!-- spring web client logging --> | ||
| + | <logger name=" | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | <!-- spring http client logging --> | ||
| + | <logger name=" | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | <!-- suppress full wire logging --> | ||
| + | <logger name=" | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | <!-- header and context logging --> | ||
| + | <logger name=" | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | <!-- turn OFF all logging (children can override) --> | ||
| + | <root level=" | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | </ | ||
| + | |||
| + | </ | ||
| + | |||