PEX: Как бы вы протестировали метод равенства в pex? - PullRequest
0 голосов
/ 20 сентября 2010

Так что я здесь играю с PEX, это кажется отличной идеей.

Однако у меня есть несколько проблем, например, у меня нет возможности проверить метод equals с помощью модульных тестов параметров.

Может быть, нет никакого способа, может быть, это техника, которую я еще не понял.

У кого-то должна быть приличная идея.

Если бы я делал это, например, в moq, я бы позаботился о том, чтобы все свойства обоих объектов были прочитаны, и сам сделал бы сравнения для их проверки. однако я не вижу, как использовать этот подход с параметризованными тестами.

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

1 Ответ

1 голос
/ 21 сентября 2010

Существуют некоторые основные свойства, которые вы можете проверить, связанные с математическим определением равенства:

  • не вылетает: a == b никогда не вызывает исключение
  • симметрично:(a == b) == (b == a)
  • рефлексивно: (a == a) == true
  • переходность: (a == b) && (b ==в) ==> a == c
  • с учетом Func f, a == b ==> f (a) == f (b)

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

Все становится более интересным, когда вы исследуете отношения с GetHashCode:

  • a.GetHashCode ()! + B.GetHashCode () ==> a! = B
  • идемпотент: a.GetHashCode () == a.GetHashCode ()
...