Я программирую в основном в scala и java, используя scalatest в scala и junit для модульного тестирования. Я хотел бы применить те же самые тесты к нескольким реализациям одного и того же интерфейса/признака. Идея состоит в том, чтобы проверить, что контракт интерфейса заключен в действие, и проверить принцип замещения Лискова.
Например, при тестировании реализаций списков тесты могут включать:
- Экземпляр должен быть пустым, если и только тогда и только тогда, когда он имеет нулевой размер.
- После вызова clear, размер должен быть равен нулю.
- Добавление элемента в середине списка будет увеличивать на единицу индекс элементов rhs.
- и др.
Каковы наилучшие методы?