Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使方法仅对我的测试可用_C#_Unit Testing_Rest - Fatal编程技术网

C# 使方法仅对我的测试可用

C# 使方法仅对我的测试可用,c#,unit-testing,rest,C#,Unit Testing,Rest,我正在尝试创建一个RESTAPI库。我正在寻找一种方法,只向我的单元测试公开一个方法,在本例中是一个用于删除我用来测试的对象的方法 基本上,这只是在每次测试后进行清理。将此删除方法公开给我的任何客户机也是没有意义的,而且实际上是危险的(删除应该是手动的) 我发现 [assembly: InternalsVisibleTo("FunctionalTests")] 但它似乎并不影响方法的可见性。有什么想法吗?我找不到解决这个具体问题的任何其他问题 谢谢 编辑1: 正在讨论的方法已标记为内部。该类

我正在尝试创建一个RESTAPI库。我正在寻找一种方法,只向我的单元测试公开一个方法,在本例中是一个用于删除我用来测试的对象的方法

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

我发现

[assembly: InternalsVisibleTo("FunctionalTests")] 
但它似乎并不影响方法的可见性。有什么想法吗?我找不到解决这个具体问题的任何其他问题

谢谢

编辑1: 正在讨论的方法已标记为内部。该类是公共的,并且具有不包含所讨论的方法的公共接口

public class Access: IAccess, IDisposable
其中包含以下方法:

 internal void DeleteIssue(string issueKey)
但它不能通过调用

AccessInstance.DeleteIssue(TestIssueKey);

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

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

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


[assembly:InternalsVisibleTo(“FunctionalTests”)]
应在AssemblyInfo.cs中声明,以使其正常工作。

测试项目通常以点命名。。因此,如果您的mvc名为MySite,VS通常会创建MySite。Test-u是否为UT程序集传递了正确的名称?Resharper告诉我“'assembly'不是此声明的有效属性位置。此块中的所有属性都将被忽略”。我已尝试将InteralVisibleTo的字符串更改为,但没有更改该字符串或更改错误。您将
[程序集:InternalsVisibleTo(“FunctionalTests”)]
代码放在何处?它在AssemblyInfo.cs?Erg中。这正是问题所在。我把它放在我的班名上面。它现在起作用了。。。它在AssemblyInfo.cs中。现在的问题是,如何标记“正确答案”?Gr8t!,我把我的评论转载为答案,所以你们可以把它标记为答案!谢谢是的,就是这样。所以我习惯了上面的那些说法,我从来没有意识到这一点。