如何在c中模拟第三方程序集(XNA/MonoGame)#

如何在c中模拟第三方程序集(XNA/MonoGame)#,xna,mocking,tdd,monogame,Xna,Mocking,Tdd,Monogame,所以,我已经开始玩MonoGame了,我注意到的一件事是,对它进行单元测试非常困难 我可以在microsoft fakes中使用垫片之类的东西,但正如本博客所指出的,这并不是真正的TDD方式 我也可以使用Duck类型之类的东西,除了静态方法之外,它对任何东西都是完美的,但是有大量的静态方法 我可以为任何东西编写适配器,目前我正在这样做,但我花了大量时间编写适配器,很少编写实际代码,这令人沮丧 我能想到的最后一个选择是生成适配器,这似乎是一个合理的想法,除了我找不到任何工具来做这件事,我的意思是我

所以,我已经开始玩MonoGame了,我注意到的一件事是,对它进行单元测试非常困难

我可以在microsoft fakes中使用垫片之类的东西,但正如本博客所指出的,这并不是真正的TDD方式

我也可以使用Duck类型之类的东西,除了静态方法之外,它对任何东西都是完美的,但是有大量的静态方法

我可以为任何东西编写适配器,目前我正在这样做,但我花了大量时间编写适配器,很少编写实际代码,这令人沮丧

我能想到的最后一个选择是生成适配器,这似乎是一个合理的想法,除了我找不到任何工具来做这件事,我的意思是我很高兴能写一些能做到这一点的东西,但这似乎是其中一个可能已经以更好的方式解决的问题


有人有什么想法吗?

一般的建议是“不要模仿你没有的东西”,编写可以模仿的适配器,用于对代码进行单元测试,以及对适配器和第三方代码进行一些集成测试。通常,您会尽量减少适配器的数量,但如果您的代码依赖于第三方代码中的多个入口点,从而迫使您编写多个适配器,那么寻找您的代码所依赖的中间抽象可能是值得的,它可以由一些“较厚”的适配器实现,即。,这不是第三方代码的1:1,而是提供了一些更高级的功能。

是的,不幸的是,在单元测试方面,XNA是一个非常糟糕的设计。你可以为此责怪微软。我也对这个问题的任何答案感兴趣。似乎真的没有任何东西可以解决这个问题,只是需要启动一个开源项目来解决它。这是github