Тест кот онлайн (краткий ориентировочный тест) пройти бесплатно с ответами

Spotlight 9 test 2 (module 2) ответы - контроль знаний

ITestDataSource

Допустим, в приложении различные методы бизнес-логики имеют разные ограничения на длину передаваемой строки. В этом случае будет удобно генерировать строки при помощи функции, для которой можно задать их минимальную и максимальную длину. Но рассмотренные выше варианты не позволяют сделать такое.

В этом случае можно создать свой атрибут, который реализует ITestDataSource (собственно, рассмотренные выше два атрибута это и делают):

public interface ITestDataSource
{
    IEnumerable<object?[]> GetData(MethodInfo methodInfo);
    string GetDisplayName(MethodInfo methodInfo, object?[] data);
}

GetData(…) отвечает за создание перечисления с тестовыми данными, которые будут по позициям сопоставлены с параметрами теста, приведены к соответствующим типам и переданы в тест. Параметр MethodInfo methodInfo предоставляет метаданные запускаемого метода с кодом теста.

Второй метод, GetDisplayName(…), отвечает за создание уникального имени теста, которое будет использоваться в отчетах. Здесь также присутствует параметр MethodInfo methodInfo, с помощью которого можно получить имя запускаемого метода.

Реализуем исходный пример теста, но уже с использованием своего атрибута:

public class CheckStringLengthAttribute : Attribute, ITestDataSource
{
    private readonly int _minLength;
    private readonly int _maxLength;

    public CheckStringLengthAttribute(int minLength, int maxLength)
    {
        _minLength = minLength;
        _maxLength = maxLength;
    }

    public IEnumerable<object?[]> GetData(MethodInfo methodInfo)
    {
        yield return new object?[] { null, true };
        yield return new object?[] { string.Empty, false };
        yield return new object?[] { new string('*', _minLength - 1), false };
        yield return new object?[] { new string('*', _minLength), true };
        yield return new object?[] { new string('*', _maxLength), true };
        yield return new object?[] { new string('*', _maxLength + 1), false };
    }

    public string GetDisplayName(MethodInfo methodInfo, object?[] data)
    {
        string suffix = data is string testStr
            ? testStr.Length.ToString()
            : "NULL";

        return $"{methodInfo.Name}_StringLength{suffix}";
    }
}

Конструктор атрибута требует два значения, определяющие минимальную и максимальную длину строки. Уникальное имя теста в GetDisplayName(…) создается путем объединения исходного имени и длины тестовой строки.

В результате тест будет выглядеть следующим образом:


public void LengthValidator_WithITestDataSource(string? target, bool expectedResult)
{
    // Arrange
    var validator = new StringLengthValidator();

    // Act
    bool result = validator.Validate(target);

    // Assert
    Assert.AreEqual(expectedResult, result, $"Failed string: '{target ?? "null"}'");
}

Spotlight 7 Test 2 Module 2

Spotlight 7 Test 2 ОТВЕТЫ — контрольная работа № 2 по английскому языку в 7 классе с ответами из сборника контрольных заданий УМК серии «Английский в фокусе» для учащихся 7 класса общеобразовательных организаций. Авторы: Ю.Е. Ваулина и др./ М.: Просвещение. Цитаты из пособия указаны в учебных целях.

Spotlight 7 Test 2A ОТВЕТЫ

А‑Подбери описания к типам рассказов.     1‑Е      2‑G      3‑F      4‑С     5‑В     6‑А.

В‑Вставь на место пропусков правильные слова.     7‑solve     8‑famous     9‑imagination     10‑glance     11‑intelligent     12‑cosy     13‑explore     14‑hide     15‑compass     16‑initials.

С‑Поставь глаголы в скобках в простое прошедшее время.     17‑wrote     18‑smoked     19‑caught     20‑Did Hercule Poirot live     21‑did Captain Nemo travel     22‑Did Dr Watson help     23‑created     24‑found     25‑was     26‑met.

D‑Подчеркни правильный вариант.     27‑as soon as      28‑went      29‑used to go      30‑when     31‑after     32‑then     33‑until.

E‑Выбери правильный ответ.     34‑А     35‑С     36‑F     37‑В     38‑Е.

F‑Прочитай текст и ответь на вопросы.     39‑They moved to the countryside.     40‑He felt confused and scared.     41‑No, he didn’t.     42‑He got lost in the same forest and he disappeared.     43‑He thought about the ghost of Philip.

G‑Расположи картинки в правильном порядке.     44‑4     45‑5     46‑3     47‑2     48‑6.

Spotlight 7 Test 2B ОТВЕТЫ

А‑Подбери описания к типам рассказов.     1‑F      2‑B      3‑C      4‑A     5‑G     6‑E

В‑Вставь на место пропусков правильные слова.     7‑initials      8‑cosy      9‑compass      10‑solve      11‑glance      12‑hide     13‑famous     14‑explore     15‑imagination     16‑intelligent.

С‑Поставь глаголы в скобках в простое прошедшее время.     17‑met     18‑wrote     19‑created     20‑Did you help travel     21‑was     22‑smoked     23‑found     24‑caught     25‑did Axel and the professor travel     26‑Did Miss Marple live.

D‑Подчеркни правильный вариант.     27‑until     28‑after     29‑as soon as     30‑then     31‑went     32‑when     33‑used to go.

E‑Выбери правильный ответ.     34‑E     35‑A     36‑В     37‑С     38‑F.

F‑Прочитай текст и ответь на вопросы.     39‑They moved to the city.     40‑She felt confused and scared.     41‑No, she didn’t.     42‑She got lost in the same park and she disappeared.     43‑She thought about the ghost of Maria.

G‑Послушай, как Дэйв рассказывает его подруге Анне о романе, который он прочитал. Затем расположи картинки в правильном порядке.     44‑4     45‑5     46‑3     47‑2     48‑6.

Spotlight 7 Test 2 Module 2 ОТВЕТЫ — контрольная работа № 2 по английскому языку в 7 классе с ответами из сборника контрольных заданий УМК серии «Английский в фокусе» для учащихся 7 класса. Авторы: Ю.Е. Ваулина и др.

Совместное использование атрибутов

Все три рассмотренные выше атрибута могут быть указаны несколько раз для одного и того же теста. Как правило это:

  1. – с различными наборами значений.
  2. – с разными методами и свойствами, предоставляющими данные.
  3. реализация ITestDataSource – с разными параметры атрибута, что должно приводить к созданию различных наборов данных.

Кроме того, указанные атрибуты можно сочетать. Например, пусть метод IEnumerable<object?[]>  GetIntValues(…) создает некую заданную последовательность целых чисел. При помощи они используется в нескольких тестах. Однако, в одном из них нужно проверять еще и значение null. В этом случае можно просто дополнительно указать DataRow]:

public void Test1(int val, bool expectedResult) { … }



public void Test2(int? val, bool expectedResult) { … }

В следующей части разберемся как можно повлиять на жизненный цикл тестов.

[DynamicData]

Но что делать, если недостаточно типов, которые можно передать через параметры атрибута? Воспользоваться другим атрибутом – . Он позволяет указать статическое свойство или статический метод, которые будут предоставлять значения и имеют следующее объявление:

private static IEnumerable<object?[]> ИмяСвойства { get { … } }
private static IEnumerable<object?[]> ИмяМетода() { … }

При этом имя и модификатор доступа могут быть любыми.

У есть два параметра. Первый это имя. Второй указывает на то, принадлежит ли имя свойству (DynamicDataSourceType.Property) или методу (DynamicDataSourceType.Method). По умолчанию считается что используется свойство.

Возвращаемое перечисление содержит массив значений типа object. Как и в случае с , они сопоставляются с параметрами теста по позициям и приводятся к указанному у конкретного параметра типу перед передачей в тест. Но теперь, в отличии от , нет ограничений на типы создаваемых объектов. Например, можно возвращать экземпляры классов.

Перепишем исходный пример с использованием метода, предоставляющего данные:


public void LengthValidator_WithDynamicData(string? target, bool expectedResult)
{
    // Arrange
    var validator = new StringLengthValidator();

    // Act
    bool result = validator.Validate(target);

    // Assert
    Assert.AreEqual(expectedResult, result, $"Failed string: '{target ?? "null"}'");
}

private static IEnumerable<object?[]> GetTestStrings()
{
    yield return new object?[] { null, true };
    yield return new object?[] { string.Empty, false };
    yield return new object?[] { "1234", false };
    yield return new object?[] { "12345", true };
    yield return new object?[] { "1234567890", true };
    yield return new object?[] { "12345678901", false };
}
Понравилась статья? Поделиться с друзьями:
Карта знаний
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: