使方法仅适用于我的测试

时间:2014-02-25 19:55:27

标签: c# unit-testing rest

我正在尝试创建REST API库。我正在寻找一种方法来公开一种方法,在这种情况下,一种方法用于删除我用来测试的对象,只用于我的单元测试。

基本上这只是在每次测试后进行清理。将删除方法暴露给我的任何客户端也没有任何意义,实际上是危险的(删除应该是手动的)。

我找到了

[assembly: InternalsVisibleTo("FunctionalTests")] 

但它似乎不会影响方法的可见性。有任何想法吗?我找不到解决这个具体问题的任何其他问题。

谢谢!

编辑1: 有问题的方法已标记为内部。该类是公共的,并且具有不包含相关方法的公共接口。

public class Access: IAccess, IDisposable

其中包含方法:

 internal void DeleteIssue(string issueKey)

然而,无法通过调用

来访问它
AccessInstance.DeleteIssue(TestIssueKey);

它返回一个错误“Access不包含'DeleteIssue'的定义,接受第一个类型'Access'的参数可以找到(你是否缺少using指令或程序集引用?)”我在同一个命名空间

2 个答案:

答案 0 :(得分:2)

确保您要使用的方法被声明为内部 - 即使使用InternalsVisibleTo,私有方法也不会暴露在程序集之外:

来自MSDN

  

通常,具有内部范围的类型和成员(在C#中)和朋友   范围(在Visual Basic中)仅在它们所在的程序集中可见   定义。 InternalsVisibleToAttribute属性也使它们成为可能   对指定程序集中的类型可见,称为a   朋友集会。

答案 1 :(得分:0)

[assembly: InternalsVisibleTo("FunctionalTests")]应该在AssemblyInfo.cs中声明才能工作。