小编use*_*158的帖子

在运行时期间获取对象值,以创建编写单元测试所需的Mock对象

考虑下面需要测试的类,

class ToBeTested
{
  Employee _e;
  public ToBeTested(Employee e)
  {
  _e = e;
  }

  void Process()
  {
  // Do something with _e
  }
}

    [TestClass]
    class ToBeTestedTest
    {
    [TestMethod]
    public void TestProcessMethod()
    {
      Employee e = // Initialise it with some test value..
      ToBeTested tbt = new ToBeTested(e);
      tbt.Process();

      //Assert to Verify the test results...  
    }
Run Code Online (Sandbox Code Playgroud)

问题Employee实际上可能是一个非常复杂的类型,其中包含属性,它们本身可以是更多类的对象.使用模拟值初始化Employee并生成可测试对象变得很困难.

在调试时,我可以设置断点并查看包含的Employee对象ToBeTested.有没有办法可以在运行时获取此对象中的所有值并在我的测试方法中使用它?

c# unit-testing visual-studio

6
推荐指数
1
解决办法
705
查看次数

在包含抽象方法的抽象类中重构具体方法

考虑以下代码,

abstract class AbstractClass
{
 public abstract void AbstractMethodA();
 public void ConcreteMethodA()
 {
  //Some operation
  ConcreteMethodB();
 }
}

 public void ConcreteMethodB()
 {
  //Huge code unrelated to this class
  AbstractMethodA();
 }
}

class DerivedClass : AbstractClass
{
public void AbstractMethodA()
{
//Some operation
}
}
Run Code Online (Sandbox Code Playgroud)

现在我希望将ConcreteMethodB()移动到单独的类中,并从抽象类中的方法ConcreteMethodA()调用它.但是由于ConcreteMethodB()使用DerivedClass中实现的抽象方法AbstractMethodA(),我无法从新类访问AbstractMethodA()方法?有关如何解决此问题的任何想法?

c# refactoring abstract-class design-patterns

3
推荐指数
1
解决办法
135
查看次数