我发现在这种情况下:我有一个遗留服务(用C#编写)只运行三个执行不同操作的线程,假设有三个不同的任务。现在每个任务都需要进行单元测试,因为在生产阶段我们有很多错误,未处理的异常等等,这使得开发人员的生活变得非常困难。
我认为很奇怪的是,显然这些任务只暴露了一个公共方法(假设运行),如果这是正确的,我想我应该对此进行单元测试。我对么?你会如何处理这种工作?你会进行哪种重构?
答案 0 :(得分:1)
仅使用一个运行大量内部代码的公共方法测试遗留类的问题在于它永远不会达到单元测试的水平。
最好的解决方案是将代码重构到这样的级别,您可以注入所有依赖项,以便测试所有代码路径。
如果您不可能控制测试运行的环境。通过以不同方式运行三个任务中的每个任务来区分测试设置,您可以独立检查每个结果并强制执行所有错误路径。
答案 1 :(得分:0)
行。首先要清楚地了解您要测试的任务正在做什么。然后考虑关注点的分离:是否有代码的一部分可以提取到单独的类,并通过接口依赖注入注入?例如,您可以使用适配器或侦听器模式,或者只注入主类中的普通外部协作者。如果是这样,那就去做吧。然后,每个人独立测试。