using System; using System.Collections; using System.Collections.Generic; using System.Text; using DfExample.DBFlute.AllCommon; using DfExample.DBFlute.AllCommon.CBean; using DfExample.DBFlute.AllCommon.Util; using DfExample.DBFlute.ExEntity; using Seasar.Quill.Unit; using MbUnit.Framework; using DfExample.DBFlute.CBean; using DfExample.DBFlute.ExBhv; namespace DfExample.DBFlute { public class ContainerTestCase : QuillTestCase { // =============================================================================== // Definition // ========== /// Log instance. protected static readonly log4net.ILog _log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); // =============================================================================== // Attribute // ========= protected DateTime? _accessTimestamp = DateTime.Now; protected String _accessUser = "testUser"; protected String _accessProcess = "testProcess"; // =============================================================================== // Setup // ===== [MbUnit.Framework.SetUp] public void Before() { // テストケース実行前の準備処理 // // /- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // 実際のアプリケーションにおいては、以下のタイミングで実行する必要がある。 // // {1}は、アプリケーションの初期化時に実行。 // {2}は、リクエスト処理の共通ポイントで実行。 // {3}は、Quillコンポーネントを利用するクラスで実行。 // - - - - - - - - - -/ // 1. Log4Netの初期化 log4net.Config.XmlConfigurator.Configure(); // 2. リクエストコンポーネントの初期化処理 InitializeRequestComponent(); // 3. TestクラスにQuillコンポーネントをインジェクション // // --> QuillTestCaseがやってくれるので不要となった(2008/03/06) // // Seasar.Quill.QuillInjector.GetInstance().Inject(this); } protected void InitializeRequestComponent() { // CommonColumnの自動設定のためのAccessContextの設定。 // // /- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // 実際のアプリケーションでは、リクエストが発行されたタイミングで以下の処理を行う。 // また、正常終了・例外終了双方で必ずAccessContextが破棄されるようにすること。 // (PageクラスなどにAspectをかけて処理するのが定番) // - - - - - - - - - -/ AccessContext context = new AccessContext(); context.AccessTimestamp = _accessTimestamp; context.AccessUser = _accessUser; context.AccessProcess = _accessProcess; AccessContext.SetAccessContextOnThread(context); } // =============================================================================== // TearDown // ======== [MbUnit.Framework.TearDown] public void After() { AccessContext.ClearAccessContextOnThread(); } // =============================================================================== // Assist Helper // ============= protected BehaviorSelector _internalSelector; protected void deleteMemberReferrers() { { PurchaseBhv bhv = _internalSelector.Select(); bhv.QueryDelete(bhv.NewMyConditionBean()); } { MemberLoginBhv bhv = _internalSelector.Select(); bhv.QueryDelete(bhv.NewMyConditionBean()); } { MemberWithdrawalBhv bhv = _internalSelector.Select(); bhv.QueryDelete(bhv.NewMyConditionBean()); } { MemberSecurityBhv bhv = _internalSelector.Select(); bhv.QueryDelete(bhv.NewMyConditionBean()); } { MemberAddressBhv bhv = _internalSelector.Select(); bhv.QueryDelete(bhv.NewMyConditionBean()); } } protected virtual String SqlDirBase { get { return "DfExample/Resources/Sql"; } } // =============================================================================== // Java Like General Helper // ======================== protected void Log(Object msg) { _log.Debug(msg); } protected void log(Object msg) { _log.Debug(msg); } // =============================================================================== // Java Like Assert Helper // ======================= protected void assertEquals(Object expected, Object actual) { Assert.AreEqual(expected, actual); } // append @nishikata protected void assertEquals(String msg, Object expected, Object actual) { Assert.AreEqual(expected, actual, msg); } // protected void assertNotSame(Object expected, Object actual) { // int型のときに正常に動作しなかったので部分的に自前で実装 if (expected != null && actual != null && expected is int && actual is int) { if (expected.ToString() == actual.ToString()) { fail("Expected 'Not Same' but expected=[" + expected + "], actual=[" + actual + "]"); } } Assert.AreNotSame(expected, actual); } protected void assertTrue(bool obj) { Assert.IsTrue(obj); } // append @nishikata protected void assertTrue(String msg, bool obj) { Assert.IsTrue(obj, msg); } protected void assertFalse(bool obj) { Assert.IsFalse(obj); } protected void assertFalse(String msg, bool obj) { Assert.IsFalse(obj, msg); } protected void assertNull(Object obj) { Assert.IsNull(obj); } protected void assertNotNull(Object obj) { Assert.IsNotNull(obj); } protected void fail() { Assert.Fail(); } protected void fail(String msg) { Assert.Fail(msg); } // =============================================================================== // General Helper // ============== public DateTime currentTimestamp() { return DateTime.Now; } public String getLineSeparator() { return SimpleSystemUtil.GetLineSeparator(); } public String toString(Object obj) { if (obj is IList) { StringBuilder sb = new StringBuilder(); IList ls = (IList) obj; foreach(Object element in ls) { if (sb.Length == 0) { sb.Append(element != null ? element.ToString() : "null"); } else { sb.Append(", ").Append(element != null ? element.ToString() : "null"); } } return sb.ToString(); } return obj != null ? obj.ToString() : null; } } }