2014-02-25 60 views
0

我正在嘗試創建一個REST API庫。我正在尋找一種方法來公開只有一種方法,在這種情況下是一種方法,用於刪除我用來測試的對象,僅用於我的單元測試。僅對我的測試提供方法

基本上這只是在每次測試後清理。將此刪除方法公開給我的任何客戶也是沒有意義的,而且實際上是危險的(刪除應該是手動的)。

我發現

[assembly: InternalsVisibleTo("FunctionalTests")] 

但它似乎並沒有影響該方法的可見性。有任何想法嗎?我找不到解決這個特定問題的其他問題。

謝謝!

編輯1: 有問題的方法已標記爲內部。該類是公共的,並且具有不包含該方法的公共接口。

public class Access: IAccess, IDisposable 

其中包含了方法:

internal void DeleteIssue(string issueKey) 

然而,它不能被調用

AccessInstance.DeleteIssue(TestIssueKey); 

它返回一個錯誤「訪問不包含‘DeleteIssue’接受的定義訪問可以找到'Access'類型的第一個參數(你是否缺少using指令或程序集引用?)「我處於同一個Namespace中。

+0

測試項目通常用點命名..所以如果你的mvc被命名爲MySite,VS通常創建MySite.Test - 你確定你的UT程序集正確的名稱? – LB2

+0

Resharper告訴我「'assembly'不是這個聲明的有效屬性位置,該塊中的所有屬性都將被忽略。」我試圖改變InteralsVisibleTo的字符串,而沒有改變或錯誤改變。 –

+0

你把你的'[assembly:InternalsVisibleTo(「FunctionalTests」)]'代碼放在哪裏?它在AssemblyInfo.cs中嗎? – LB2

回答

0

[assembly: InternalsVisibleTo("FunctionalTests")]應該在AssemblyInfo.cs中聲明它的工作。

+0

謝謝。是的,這就是它的原因。所以習慣於那種以上的方法,它從來沒有在我身上發現過。 –

2

讓你想用確保您的方法聲明爲內部 - 私有方法將不會裝配的外部暴露出即使InternalsVisibleTo:

MSDN

按說,類型和成員內部範圍(在C#中)和朋友 範圍(在Visual Basic中)僅在定義它們的程序集中可見。 InternalsVisibleToAttribute屬性使它們對指定程序集中的類型也是可見的, 被稱爲 朋友程序集。

相關問題