То, что вы описываете, на самом деле не достаточно тонкое для TDD в коде, но вы можете сломать его.
Прежде всего, как они будут представлены с информацией, необходимой им для поиска? Они собираются увидеть все статистические данные? Поиск игрока? Поиск конкретного стата? Это дает вам более тонкое поведение, и теперь вы можете начать думать о интерфейсе, который пользователь будет использовать. Подумайте только один пример того, что пользователь делает - возможно, поиск игрока, возможно, посещение первой страницы и т. Д. Сделайте что-то интересное, но простое.
Как только вы узнаете, как будет выглядеть эта часть пользовательского интерфейса, вы можете ее закодировать. (Вы может TDD, но, как правило, интерфейс немного меняется, а автоматизация пользовательского интерфейса сложна, поэтому большинство людей не поддерживают TDD UI).
Пользовательский интерфейс захочет получить некоторую информацию откуда-нибудь и передать некоторую информацию обратно. Вы обнаружите, что думаете о сотрудничающем классе - вероятно, о контроллере или ведущем, - который поможет интерфейсу. В свою очередь, этот контроллер захочет контролировать взаимодействие между некоторыми другими классами - сам пользовательский интерфейс, репозиторий статистики игроков, безопасность, валидация и т. Д. Это первый класс, на который вы будете писать тесты.
Теперь вы можете начать запись теста для контроллера. Вы уже знаете, как UI собирается его использовать. Просто напишите пример того, как другой класс может использовать контроллер таким же образом, какую информацию требуется контроллеру и какой результат вы получите, когда используете его.
Конечно, у вас еще нет классов, и диспетчер может понадобиться им. Используйте интерфейсы для ролей, которые будут играть эти классы, их зависимость, их вводят в заблуждение и издеваются над ними.
В какой-то момент контроллер будет готов что-то сделать, но вы все еще не можете запустить приложение, потому что вы еще не закончили кодировать классы сотрудничества - они все еще просто интерфейсы. Сделайте то же самое снова для них - притворяйтесь, что вы являетесь контролером, используя их, и если им нужны какие-либо другие классы, издеваются над ними или их заглушить.
В конце концов у вас не будет классов для издевки или заглушки, и будет запущен первый сценарий в пользовательском интерфейсе. Если вы хотите получить более быструю обратную связь, в любой момент вы можете просто скопировать некоторые данные, чтобы пользовательский интерфейс работал, и вы можете видеть, как он выглядит.
Выполнение этого способа называется снаружи в, и связано с BDD, несколько иным образом мышления о TDD. Я надеюсь, что this page может вам помочь.
Хорошо, я понял, я должен начать с моего контроллера до конца ... но дело в том, что я на самом деле создаю только DLL, не будет никаких интерфейсов в том, что я должен делать, просто простой API. Поэтому я предполагаю, что это означает, что мои рассказы пользователей должны быть более конкретными, чем то, что они есть на данный момент! Tx для ввода. – mateoc
Если вы создаете библиотеку, я рекомендую создать действительно простое прикольное приложение для использования библиотеки в качестве способа ее тестирования. Например, я создал поддельный зоомагазин для тестирования моего инструмента автоматизации пользовательского интерфейса, а API для JBehave изначально был написан, используя его для Game of Life от Conway. * Ваш * пользовательский интерфейс будет сам API, и вы, вероятно, захотите его TDD.Просто ваш пользователь - другая система, а не человек. Удачи! – Lunivore