【题外话】

  对单元测试不熟悉的童鞋可参照我之前写过的两篇博文:

在Visual Studio 2012使用单元测试》、

  

  以下Demo将使用我已写好的一些关于单元测试的类库(已放至 https://idletest.codeplex.com/ 

,其用了大量的匿名方法,同样不熟悉的可参照我上一篇博文《委托的N种写法,你喜欢哪种?

 

【进入正题】

   与其说对接口测试还不如说针对抽象测试,也是我个人比较喜欢的编码步骤:编写接口(面向抽象)=>单元测试=>实现。

  OK here we go...

  首先假设有如下接口(这也是从我的代码中提取出来的)

    public interface ITextFormatter
    {
        /// <summary>
        /// 根据指定格式字符串获取对象
        /// </summary>
        T GetObject<T>(string formatString);

        /// <summary>
        /// 将对象转化为指定格式字符串
        /// </summary>
        string GetString(object obj);
    }

 

  那么接下来我要做的并不是马上去实现它,而是测试先行,我将编写如下测试代码

    public abstract class BaseFormatterTest
    {
        protected abstract ITextFormatter formatter
        {
            get;
        }
        
        /// <summary>
        ///GetObject 的测试
        ///</summary>
        public void GetObjectTestHelper<T>()
        {
            AssertCommon.AssertIsNull<string, T>(TestCommon.GetEmptyStrings(), true, (string strTemp) => {
                return formatter.GetObject<T>(strTemp);
            });

            EntityParameter ep = new EntityParameter(123);
            string str = formatter.GetString(ep);
            EntityParameter actual = formatter.GetObject<EntityParameter>(str);
            Assert.IsNotNull(actual);
            Assert.AreEqual<int>(123, actual.Data);
        }

        public virtual void GetObjectTest()
        {            
            GetObjectTestHelper<GenericParameterHelper>();
        }

        /// <summary>
        ///GetString 的测试
        ///</summary>
        public virtual void GetStringTest()
        {
            AssertCommon.AssertEmpty<string>(formatter.GetString(null));

            AssertCommon.AssertEmpty<string>(formatter.GetString(new object()), false);

            string actual = formatter.GetString(new EntityParameter(12));
            AssertCommon.AssertEmpty<string>(actual, false);
            EntityParameter entity = formatter.GetObject<EntityParameter>(actual);
            Assert.AreEqual<int>(12, entity.Data);
        }
针对接口测试抽象基类

相关文章:

  • 2021-12-18
  • 2021-06-10
  • 2021-11-21
  • 2022-01-16
  • 2021-08-08
猜你喜欢
  • 2021-05-14
  • 2022-01-08
  • 2022-01-21
  • 2022-02-07
  • 2021-11-06
  • 2022-12-23
  • 2022-01-13
相关资源
相似解决方案