代码之家  ›  专栏  ›  技术社区  ›  MunkiPhD

如何为调用同一类中其他方法的方法创建基于状态的测试?

  •  2
  • MunkiPhD  · 技术社区  · 15 年前

        public void HandleModeInit(int appMode){
            switch(appMode){
                Case 1:
                    DoThis();
                Case 2:
                    DoThat();
                Case 3:
                    //no mode 3
                Case 4:
                    DoSomethingElse();
                Case else:
                    //do nothing
            }
        }
    

    如何在不将此方法转换为集成测试的情况下对其进行单元测试(最终测试DoThis()、DoThat()和DoSomethingElse()所做的工作)?因为这些方法调用是对方法进行的

    3 回复  |  直到 15 年前
        1
  •  0
  •   Michael Mann    15 年前

    如果您可以控制传入此方法的内容,那么我将传入一个接口,该接口将appmode作为参数,它是AppModeImplementationFactory。此工厂的目的是创建AppMode实现。工厂将如下所示:

    public class AppModeImplementationFactory: IAppModeFactory
    {
       public IAppModeImplementation Create(int appMode)
       {
          // switch case goes here to create the appropriate instance
       }
    }
    

    希望这有帮助

        2
  •  0
  •   Justin Niessner    15 年前

    您可以创建一个名为IAppMode的接口,而不是使用switch/case语句来切换appmode(我假设调用方可以决定实例化哪个正确实现了IAppMode的对象,因为它们已经传入一个int来表示App模式)。

    调用者将传入一个IAppMode对象,然后您的方法可以调用IAppMode的DoThis()方法。

        3
  •  0
  •   Fredrik Mörk    15 年前

    我意识到(特别是在您注意到这一点的情况下)代码被简化了,但是如果您不测试在这种情况下调用的方法做了什么,那么您实际测试的是什么?价值 appMode ?

    HandleModeInit 返回?