在另一个过时方法中使用过时方法时强制编译错误

时间:2013-05-01 15:05:37

标签: .net fitnesse acceptance-testing

我正在为DotNet 4.0中的fitnesse编写一些fixture代码,并希望保护我的api方法不被用在代码库中。我认为这可以使用[Obsolete]属性完成,但是如果在另一个标记为过时的方法中使用过时的方法,则不会生成编译错误。

[Obsolete("Used only externally", true)]
public void Method1() {
}

[Obsolete("Used only externally", true)]
public void Method2() {
    Method1();
}

我希望上面的代码生成编译错误。还有其他方法可以解决这个问题吗?最好是在DotNet框架内部吗?

2 个答案:

答案 0 :(得分:1)

您不应该将灯具代码放入要测试的装配体中。相反,您应该为灯具代码创建一个单独的项目。 fixture代码应该使用与程序集的其他客户端相同的公共API来访问“被测系统”。

您在FitNesse中编写的测试只能访问夹具组件。

+----------------+    +-----------------+    +-------------------+
| FitNesse Tests | -> | Fixture Assembly| -> | System under test |
+----------------+    +-----------------+    +-------------------+
                                                   ^
                       +----------------+          |
                       | Other Clients  | ---------+
                       +----------------+

答案 1 :(得分:0)

您还没有给出用例的真实示例,但如果您想保护API方法不被其他程序集调用,为什么不使用internal访问修饰符?

http://msdn.microsoft.com/en-us/library/7c5ka91b.aspx