单元测试中设置被测试类接口的值

发表于:2009-11-17 14:52

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

  有类声明如下:

  public class TestA  
  {  
      interface ITest  
      {  
          string Test();  
      }  
      ITest Test;  
  } 
      public class TestA
      {
          interface ITest
          {
              string Test();
          }
          ITest Test;
      }

  在单元测试中需要使用TestA.Test属性,并为其赋值。

  因为ITest接口和TestA.Test属性都是私有的,为了在单元测试中使用它们,需要为其生成专用访问器。

  然后声明一个类A继承并实现接口,最后实例化类A为TestA.Test属性赋值,并调用。

  class A : TestA_Accessor.ITest_Accessor  
  { 
      #region ITest_Accessor 成员  
      public string Test()  
      {  
          return "Success";  
      } 
      #endregion  
  }  
  /// <summary>  
  ///TestA 构造函数 的测试  
  ///</summary>  
  [TestMethod()]  
  public void TestAConstructorTest()  
  {  
      TestA_Accessor target = new TestA_Accessor();  
      target.Test = new A();  
      Assert.AreEqual("Success", target.Test.Test());  
  } 
          class A : TestA_Accessor.ITest_Accessor
          {
              #region ITest_Accessor 成员
              public string Test()
              {
                  return "Success";
              }
              #endregion
          }
          /// <summary>
          ///TestA 构造函数 的测试
          ///</summary>
          [TestMethod()]
          public void TestAConstructorTest()
          {
              TestA_Accessor target = new TestA_Accessor();
              target.Test = new A();
              Assert.AreEqual("Success", target.Test.Test());
          }

  运行测试后,发现测试失败了,错误信息为:类型“ServiceRetrieveTest.TestATest+A”的对象无法转换为类型 “PlatformClassLibrary.TestA+ITest”。错误发生在target.Test = new A();这个语句上,虽然类A继承了接口,但是ITest接口与他的专用访问器ITest_Accessor之间并不是简单继承关系,无法相互转化,导致测试失败。

  研究后发现一个解决方法

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号