使用#IF指令来检测单元测试

发布于 2024-12-18 02:38:13 字数 225 浏览 2 评论 0原文

我的代码中有这个特定的调用,我发现运行完整应用程序时的配置需要与使用集成单元测试进行测试时的配置不同。

有没有办法使用 #if 指令检查单元测试的调用?

#if TestMethod
...do this config
#else
...do this config
#endif

也许可以通过某种方式检测单元测试函数的属性?

I have this specific call in my code and I found the config needs to be different when running the full app as to when I'm testing using an integration unit test.

Is there a way to check for a call from a unit test using the #if directive?

#if TestMethod
...do this config
#else
...do this config
#endif

Maybe someway to detect an attribute on the unit test function?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

挽手叙旧 2024-12-25 02:38:13

不,因为代码要么存在于构建的二进制文件中,要么不存在。该决定完全在编译时做出,因此在执行时您无法执行任何操作来重新引入“丢失”的代码。您必须动态加载两个不同的二进制文件之一,并以这种方式运行测试。

您是否必须使用条件编译,而不是在执行时决定采用哪条路线?

No, because either the code exists in the built binary or it doesn't. The decision is made entirely at compile-time, so there's nothing you can do at execution time to reintroduce the "missing" code. You'd have to dynamically load one of two different binaries, and run the tests that way.

Do you have to use conditional compilation, instead of deciding which route to take at execution time?

も星光 2024-12-25 02:38:13

您不想从代码中处理调用者上下文;特别是当您尝试测试其中的逻辑时。但是,如果您想要使用不同的参数来执行某些函数(例如),具体取决于您是在应用程序还是测试上下文中执行它,那么您可以使用某些基本类型或接口作为参数,或者使用属性并使用反射检查属性。这些指令用于确定应编译哪些代码,并且只有在确定这就是您的意图时才应使用它们。

You wouldn't want to handle the caller context from your code; particularly if you are trying to test the logic within it. If, however, you want to execute some function with different parameters (for example) depending on whether you are executing it in application or test context, then you could either use some base type or interface as the parameter, or tag the method with an attribute and check the attribute using reflection. The directives are to be used to determine what code should be compiled and you should only use them if you are certain that's what you are intending.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文