NUnit TestCase не может обратиться к члену экземпляра - PullRequest
1 голос
/ 17 апреля 2020

Я пытаюсь SetUp объект для использования в некоторых Visual Basic NUnit интеграционных тестах аналогично тому, как я делал это раньше в C#.

Public Class ApprovalLevelTests

Private myLevel As ApprovalLevel= Nothing

<SetUp>
Public Function Setup()
    myLevel = ApprovalLevel.GetApprovalLevel(1, "414", "MKRT")
End Function

Public Sub TearDown()

End Sub

<TestCase(myLevel.Basic, "<=$1,000")>
<TestCase(myLevel.Middle, "$1,000-$5,000")>
Public Sub AutoApprovalRange_ValidRanges_ReturnsTrue(ByVal approvalRange As String, ByVal limit As String)

Но Visual Studio жалуется, что myLevel нельзя использовать в тестовом примере, поскольку вы не можете ссылаться на экземпляр экземпляра класса из общего метода или инициализатора общего члена. Я немного сбит с толку, потому что я пытался сделать это, передавая строковые литералы, и это все еще расстраивало. Если я делаю это таким образом, это не проблема.

Public Sub AutoApprovalRange_ValidRanges_ReturnsTrue()
    ApprovalLevel level = ApprovalLevel.GetApprovalLevel(1, "414", "MKRT");
    Assert.IsTrue(level.Basic == "(Limit: <=$1,000)");
    Assert.IsTrue(level.Middle == "(Limit: $1,000-$5,000)");

Что я не понимаю?

1 Ответ

0 голосов
/ 21 апреля 2020

Как вы, возможно, уже знаете, описания, которые вы предоставляете в угловых скобках, являются. NET Атрибуты. Это общая особенность, которую механизм модульного тестирования использует для идентификации и настройки тестов. Атрибуты фактически Shared, поскольку они являются свойством процедуры для всех классов. На самом деле они go дальше, чем Shared, поскольку являются свойством языкового элемента в сборке.

Вследствие этого в документации C# об атрибутах прямо указывается, что атрибуты-аргументы должны быть константами времени компиляции. Вы можете найти документацию C# здесь: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/language-specification/attributes

Я не нашел ничего эквивалентного в документации по атрибутам VB, но я не думаю, что это будет зависеть от языка. c. Это естественный вывод, что такое атрибуты и как они обрабатываются компилятором.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...