差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
study:java:powermock:integation [2020/03/26 07:43] – [@PowerMockIgnore] bananastudy: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:
   <groupId>ora.apache.maven.plugins</groupId>   <groupId>ora.apache.maven.plugins</groupId>
   <artifactId>maven-compiler-plugin</artifactId>   <artifactId>maven-compiler-plugin</artifactId>
-  <version>3.7.0</version>+  <version>3.8.1</version>
   <configuration>   <configuration>
     <source>${java.version}</source>     <source>${java.version}</source>
行 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|
  
  
-===== Common Parent Test Class =====+====== Common Parent Test Class ======
 Testクラスが共通で継承する親クラスについて、サンプルとして残しておく。\\ Testクラスが共通で継承する親クラスについて、サンプルとして残しておく。\\
  
 <code java> <code java>
 @Listeners({CustomTestMethodListener.class}) @Listeners({CustomTestMethodListener.class})
-@MockPolicy(Slf4jMockPolicy.class) +@PowerMockIgnore({"javax.management.*", "javax.security.auth.x500.*", "javax.net.ssl.*",
-@PowerMockIgnore({"javax.management.*", "javax.security.auth.x500.X500Principal", "javax.net.ssl.*",+
  "oracle.jdbc.*", "javax.sql.*", "com.microsoft.sqlserver.*"})  "oracle.jdbc.*", "javax.sql.*", "com.microsoft.sqlserver.*"})
 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, new OracleDataTypeFactory());  _config.setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY, new OracleDataTypeFactory());
 +    }
 +
 +    //Enable Log4j 1.x bridge
 +    private void setUpLog4j() {
 +        System.setProperty("log4j1.compatibility", "true");
     }     }
  
行 105: 行 112:
 </code> </code>
  
-==== @Listeners ====+===== @Listeners =====
 Test実行中のあるフェーズで共通の処理を追加したい場合の為に、%%TestNG%%ではListener((https://testng.org/doc/documentation-main.html#testng-listeners))というInterfaceを提供している。\\ Test実行中のあるフェーズで共通の処理を追加したい場合の為に、%%TestNG%%ではListener((https://testng.org/doc/documentation-main.html#testng-listeners))というInterfaceを提供している。\\
 通常テストを行う際、メソッド1個のみ実行することはない。\\ 通常テストを行う際、メソッド1個のみ実行することはない。\\
行 124: 行 131:
  if (method.isTestMethod()) {  if (method.isTestMethod()) {
             System.out.println("on test method " +  method.getTestMethod().getMethodName() + " start");             System.out.println("on test method " +  method.getTestMethod().getMethodName() + " start");
-     //paramerters+     //parameters
      System.out.println("parameters:" + ToStringBuilder.reflectionToString(testResult.getParameters(), ToStringStyle.SIMPLE_STYLE));      System.out.println("parameters:" + ToStringBuilder.reflectionToString(testResult.getParameters(), ToStringStyle.SIMPLE_STYLE));
         }         }
行 133: 行 140:
      */      */
     public void afterInvocation(IInvokedMethod method, ITestResult testResult) {     public void afterInvocation(IInvokedMethod method, ITestResult testResult) {
-        // nop+        //NOP
     }     }
  
行 139: 行 146:
 </code> </code>
  
-==== @MockPolicy ====+===== @MockPolicy =====
 Powermockをlog4j又はslf4jと一緒に使う場合、次のエラーが発生することがある。 Powermockをlog4j又はslf4jと一緒に使う場合、次のエラーが発生することがある。
 <code> <code>
行 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/test/resourcesフォルダーに配置しておく。\\
 +設定例を以下に示す。
 +<code>
 +
 +<Configuration>
 +    <Properties>
 +        <Property name="LOG_DIR">C:/workspaces/logs/appl</Property>
 +    </Properties>
 +    <Appenders>
 +        <Console name="CONSOLE" target="SYSTEM_OUT">
 +            <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n" />
 +        </Console>
 +        <RollingFile name="AccessLog"
 +    fileName="${LOG_DIR}/web.log"
 +    filePattern="${LOG_DIR}/web.log.%d{yyyy-MM-dd}"
 +            >
 +            <PatternLayout pattern="%d %-5p %-42c - %m%n" charset="UTF-8" />
 +            <Policies>
 +                <TimeBasedTriggeringPolicy />
 +            </Policies>
 +        </RollingFile>
 +        <RollingFile name="ErrorLog"
 +    fileName="${LOG_DIR}/error.log"
 +    filePattern="${LOG_DIR}/error.log.%d{yyyy-MM-dd}"
 +            >
 +            <PatternLayout pattern="%d %-5p - %m%n" charset="UTF-8" />
 +            <Policies>
 +                <TimeBasedTriggeringPolicy />
 +            </Policies>
 +        </RollingFile>
 +    </Appenders>
 +    <Loggers>
 +        <!-- rootLoggerへ伝播を防ぐため、additivity=false指定  -->
 +        <Logger name="com.consoto.bizlogic" level="debug" additivity="false">
 +        <AppenderRef ref="CONSOLE" />
 +        <AppenderRef ref="ErrorLog" level="error" />
 +        </Logger>
 +        <!-- 基本loggingレベル -->
 +        <Root level="debug">
 +            <AppenderRef ref="CONSOLE" />
 +        </Root>
 +    </Loggers>
 +</Configuration>
 +
 +</code>
 +
 +====== logback.xml設定 ======
 +logback-classicをloggingとして使う場合の設定例を以下に示します。
 +<code>
 +<?xml version="1.0" encoding="UTF-8" ?>
 +<!DOCTYPE logback>
 +<configuration>
 + <property name="LOG_DIR" value="C:/workspaces/logs/appl" />
 + <!-- コンソール出力 -->
 + <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
 +     <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
 + <pattern>
 +     %d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] -   %class{40}.%method:%msg %n
 +         </pattern>
 +     </encoder>
 + </appender>
 +
 + <!--
 +     ファイルへ出力 
 + -->
 + <appender name="FILE_E" class="ch.qos.logback.core.rolling.RollingFileAppender">
 +     <file>${LOG_DIR}/ecabinet.log</file>
 +     <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
 + <fileNamePattern>${LOG_DIR}/ecabinet_%d{yyyy-MM-dd}.log</fileNamePattern>
 + <maxHistory>30</maxHistory>
 +     </rollingPolicy>
 +     <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
 +     <pattern>
 +     %d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] -   %class{40}.%method:%msg %n
 +         </pattern>
 +     </encoder>
 + </appender>
 +
 +        <logger name="com.nsk.sample.demo" level="DEBUG" additivity="false">
 +        <appender-ref ref="STDOUT" />
 +        </logger>
 +
 + <!-- spring web client logging -->
 + <logger name="org.springframework.web.client" level="DEBUG" additivity="false">
 +     <appender-ref ref="STDOUT" />
 + </logger>
 +
 + <!-- spring http client logging -->
 + <logger name="org.springframework.http.client" level="DEBUG" additivity="false">
 +     <appender-ref ref="STDOUT" />
 + </logger>
 +
 +        <!-- suppress full wire logging -->
 + <logger name="org.apache.http.wire" level="DEBUG" additivity="false">
 +     <appender-ref ref="FILE_E" />
 + </logger>
 +
 + <!-- header and context logging -->
 + <logger name="org.apache.http" level="DEBUG" additivity="false">
 +     <appender-ref ref="STDOUT" />
 + </logger>
 +
 + <!-- turn OFF all logging (children can override) -->
 + <root level="INFO">
 +        <appender-ref ref="STDOUT" />
 + </root>
 +
 +</configuration>
 +
 +</code>
 +
  

QR Code
QR Code study:java:powermock:integation (generated for current page)