nablarch.test.TestSupport Maven / Gradle / Ivy
package nablarch.test;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import nablarch.core.ThreadContext;
import nablarch.core.repository.SystemRepository;
import nablarch.core.util.I18NUtil;
import nablarch.core.util.StringUtil;
import nablarch.core.util.annotation.Published;
import nablarch.test.core.db.TableData;
import nablarch.test.core.reader.TestDataParser;
import nablarch.test.core.util.MapCollector;
import nablarch.test.event.TestEventDispatcher;
import static nablarch.core.util.StringUtil.isNullOrEmpty;
/**
* テストサポートクラス。
* 本テスティングフレームワークを利用する際のヘルパーメソッドを提供する。
*
* @author Tsuyoshi Kawasaki
*/
@Published
public class TestSupport extends TestEventDispatcher {
/** リソース読み込み時のベースディレクトリ */
private static final String DEFAULT_RESOURCE_ROOT = "test/java/";
/** ベースディレクトリを取得するためのキー */
private static final String RESOURCE_ROOT_KEY = "nablarch.test.resource-root";
/** ThreadContextに設定するデフォルトのロケール表現を取得するためのキー */
private static final String DEFAULT_LOCALE_EXPRESSION_KEY = "defaultLocale";
/** ThreadContextに設定するロケール表現を取得するためのキー */
private static final String LOCALE_EXPRESSION_KEY = ThreadContext.LANG_KEY;
/** パスセパレータ */
private static final String PATH_SEPARATOR = ";";
/** テスト対象クラス */
private final Class> testClass;
/**
* ThreadContextに値を設定する。
*
* @param sheetName 取得元シート名
* @param id 取得元ID
*/
public void setThreadContextValues(String sheetName, String id) {
Map contextValues = getMap(sheetName, id);
setThreadContextValues(contextValues);
}
/**
* ThreadContextに値を設定する。
*
* @param contextValues ThreadContextに設定する値
*/
public static void setThreadContextValues(Map contextValues) {
for (Entry entry : contextValues.entrySet()) {
String key = entry.getKey();
if (key.equals(LOCALE_EXPRESSION_KEY)) {
continue; // ロケールは後続処理で追加
}
ThreadContext.setObject(key, entry.getValue());
}
// ロケールの設定
setLocaleToThreadContext(contextValues.get(LOCALE_EXPRESSION_KEY));
}
/**
* スレッドコンテキストにロケールを設定する
*
* @param localeExpression ロケールの文字列表現
*/
private static void setLocaleToThreadContext(String localeExpression) {
String locale = isNullOrEmpty(localeExpression)
? SystemRepository.getString(DEFAULT_LOCALE_EXPRESSION_KEY)
: localeExpression;
if (!isNullOrEmpty(locale)) {
ThreadContext.setLanguage(I18NUtil.createLocale(locale));
}
}
/**
* コンストラクタ
*
* @param testClass テスト対象クラス
*/
@Published
public TestSupport(Class> testClass) {
this.testClass = testClass;
}
/**
* HTTPリクエストパラメータ作成用のMapを取得する。
*
* @param sheetName シート名
* @param id ID
* @return Map形式のデータ
*/
@Published
public Map getParameterMap(String sheetName, String id) {
return convert(getMap(sheetName, id));
}
/**
* Map形式でデータを取得する。
*
* @param sheetName シート名
* @param id ID
* @return Map形式のデータ
*/
@Published
public Map getMap(String sheetName, String id) {
List
© 2015 - 2025 Weber Informatics LLC | Privacy Policy