我的团队有一组针对我们的应用程序代码运行的单元测试库——不幸的是,它们抛出(意外)异常。这样做的原因是我们的日志记录代码被调用并且对象没有被设置。日志代码通过我们使用 PostSharp 设置的方法属性执行(在方法主体执行之前和之后调用)。不应调用该属性。
这是 PostSharp 帮助我们的地方:它寻找一个条件编译器指令 (SKIPPOSTSHARP),它告诉它不要执行。换句话说,如果我们在执行单元测试时定义指令,那么我们就能够独立于日志记录方面来测试所需的代码——成功地避免了不必要的依赖和复杂的模拟代码。
这很棒!除了一个问题......为我们的测试项目定义的条件编译器指令不会为正在测试的项目定义 - 这意味着我们的测试代码仍然使用该属性并且我们的测试都失败了。
是否可以仅在运行单元测试时在整个解决方案中定义编译器指令?即使我们没有将它应用于整个解决方案,是否只能在我们运行单元测试时将指令应用于特定项目(这同样适用)?
我也有兴趣看到关于这种方法的意见(我们正试图通过 AOP 代码实现分离和可伸缩性,但随着我们的进展,似乎确实有一些额外的障碍让我们跳过)。
注意:我在这里不是在谈论集成测试,只是单元测试。我们只想测试特定的单元,我们不关心日志代码是否有效——它会被其他单元测试(工作正常)测试。