Проблема с Resharper "Тип аргумента является избыточным" и утверждений - PullRequest
2 голосов
/ 27 февраля 2012

Я только недавно начал использовать ReSharper и ищу способ решения конкретной проблемы с помощью подсказки / быстрого исправления «спецификация аргумента типа». При написании модульных тестов я использовал Assert.AreEqual<string>(x, y), а ReSharper помечает использование <string> как избыточное. Я бы не хотел, чтобы это было помечено как избыточное для того или иного подобного использования в моих модульных тестах. Есть ли способ отключить этот конкретный случай использования (который можно было бы распространить на другие утверждения)? Пожалуйста, обратите внимание, я хотел бы избежать подавления комментариями из-за большого количества шума, который будет создавать в исходном файле. Я также не хочу полностью отключать эту функцию.

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

Спасибо

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

[TestMethod]
public void ViewModelConstructor_NullProgram_SetsVisibilityToCollapsed()
{
    _currentProgram = null; //Set condition under test
    var Target = TargetMaker(); //Use shared constructor code in all tests
    Assert.AreEqual<System.Windows.Visibility>(System.Windows.Visibility.Collapsed, Target.SectionVisibility);
}

Редактировать 2: Вот пример предложенных изменений до и после ReSharper. Эти два фрагмента кода показывают очень разные результаты. Я отметил различное поведение в именах тестовых функций.

class ClassUnderTest
{
    public string fieldUnderTest { get; set; }
    public ClassUnderTest()
    {
        fieldUnderTest = "New Value";
    }
}


[TestClass()]
public class ClassUnderTestTest
{

    [TestMethod()]
    public void ClassUnderTestConstructorTest_FailsTest()
    {
        ClassUnderTest target = new ClassUnderTest();
        Assert.AreEqual(true, target.fieldUnderTest);
    }

    [TestMethod()]
    public void ClassUnderTestConstructorTest_WontCompile()
    {
        ClassUnderTest target = new ClassUnderTest();
        Assert.AreEqual<string>(true, target.fieldUnderTest);
    }
}

Ответы [ 3 ]

2 голосов
/ 27 февраля 2012

Resharper 6.1 вводит понятие настроек - «слои». Вот запись в блоге , в которой вы узнаете, как настроить параметры проекта , то есть то, что вам нужно.

0 голосов
/ 01 марта 2012

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

0 голосов
/ 27 февраля 2012

Щелкните по избыточной части, затем щелкните слева от строки и выберите Inspection option for Redundent....Там вы можете выбрать более низкий уровень ограничения, пока он вам не понравится.

...