Как вы тестируете переименованный частичный метод? - PullRequest
4 голосов
/ 30 июня 2011

Я использую Linq to SQL, который генерирует частичные классы и частичные методы. Затем вы расширяете этот сгенерированный код, внедряя свои настройки вручную в другой частичный класс. Одна из возможностей L2S - это возможность реализовать частичные методы, которые вызываются при изменении свойства. Например, если у вас есть свойство с именем «MyProp», вы можете реализовать частичный метод следующим образом:

' Given to you in the generator
Partial Private Sub OnMyPropChanged()
End Sub

' Manually implemented in my custom class
' I cannot specify that this is an implementation of a Partial, even though it is...
Private Sub OnMyPropChanged()
   Console.WriteLine("My prop changed... do something here")
End Sub

Проблема, с которой я столкнулся, заключается в том, что имя «MyProp» теперь изменено на «MyNewPropName», поэтому теперь частичное в генераторе создает Partial Private Sub OnMyNewPropNameChanged(), но моя версия метода частичного использования все еще имеет старое имя. По сути, теперь у меня есть потерянный закрытый метод, который никогда не вызывается, что означает, что мой код не работает во время выполнения. Как бы вы проверили что-то подобное или даже лучше - есть ли способ указать, что моя версия OnMyPropChanged() является реализацией частичного метода, так что я получаю разрыв во время компиляции, если нет соответствующего частичного в сгенерированном коде?

Ответы [ 2 ]

2 голосов
/ 30 июня 2011

Используя статический анализ (анализ кода), вы получите предупреждение / ошибку, когда ваш код содержит какие-либо внутренние (приватные, freid, внутренние) элементы, к которым никогда не обращаются или которые когда-либо были установлены.это может помочь найти такие созвездия.(IIRC код ошибки CA1811)

0 голосов
/ 30 июня 2011

На мой взгляд, я не думаю, что вы можете.

При изменении имени свойства в конструкторе вы вызываете пересоздание автоматически сгенерированного кода.

Лучший подход заключается вспроектируйте свои объекты, прежде чем вы начнете внедрять бизнес-логику.Создайте модульные тесты в Visual Studio, которые выполняют тест для частичной реализации.Модульное тестирование в Visual Studio даже даст вам статистику покрытия кода.

Надеюсь, это поможет

...