NUnit — альтернативы использованию ToString() в TestCaseC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 NUnit — альтернативы использованию ToString() в TestCase

Сообщение Anonymous »

Когда я создаю тест:

Код: Выделить всё

[TestCase(123, "http://www.example.com/123")]
public void Foo(int clientId, string expectedUrl)
{
string url = GetUrl(clientId);

Assert.That(url, Is.EqualTo(expectedUrl));
}
Обычно мне нравится извлекать общие элементы во входных данных и ожидаемом результате. Особенно, если я использую одно и то же значение по умолчанию для нескольких тестов. Например, мне нравится делать что-то вроде:

Код: Выделить всё

private int DefaultClientId = 123;

[TestCase(DefaultClientId , $"http://www.example.com/{DefaultClientId}")]
public void Foo(int clientId, string expectedUrl)
{
string url = GetUrl(clientId);

Assert.That(url, Is.EqualTo(expectedUrl));
}
Однако это невозможно без использования TestCaseSource, что значительно усложняет работу в простых случаях. Решение (еще более уродливое?), которое я нашел, состоит в том, чтобы объявить строковую переменную с «тем же» содержимым:

Код: Выделить всё

private int DefaultClientId = 123;
private string DefaultClientIdValue = "123";

[TestCase(DefaultClientId , "http://www.example.com/" + DefaultClientIdValue)]
public void Foo(int clientId, string expectedUrl)
{
string url = GetUrl(clientId);

Assert.That(url, Is.EqualTo(expectedUrl));
}
Другой вариант решения этой проблемы — выполнить интерполяцию строк внутри функции:

Код: Выделить всё

private int DefaultClientId = 123;

[TestCase(DefaultClientId , "http://www.example.com/")]
public void Foo(int clientId, string protoExpectedUrl)
{
var expectedUrl = protoExpectedUrl + DefaultClientId;
string url = GetUrl(clientId);

Assert.That(url, Is.EqualTo(expectedUrl));
}
но если я тестирую несколько разных тестовых случаев, и каждый из них создает разные URL-адреса, это невозможно.
Есть ли какой-нибудь способ справиться с этим "проблема" элегантно?

Подробнее здесь: https://stackoverflow.com/questions/789 ... a-testcase
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • NUnit — альтернативы использованию ToString() в TestCase
    Anonymous » » в форуме C#
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • NUnit — альтернативы использованию ToString() в TestCase
    Anonymous » » в форуме C#
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • NUnit — альтернативы использованию ToString() в TestCase
    Anonymous » » в форуме C#
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Ограничение NUnit в TestCase
    Anonymous » » в форуме C#
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • NUnit не может распознать TestCase, если он содержит массив
    Anonymous » » в форуме C#
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»