2013-04-21 2 views
2

Я разрабатываю своего рода unittest каркас для внешнего hardware, включая бегун для теста. Термин «оборудование» означает, что тесты не тестируют программное обеспечение на хосте - они тестируют реализацию на внешнем оборудовании, на microcontrollers.Написание пользовательских тестовых фреймов

В C# unittests всегда объявляется с attributes, а не с помощью тестового теста interface.

Мой вопрос дизайна - какое решение я должен использовать для нового дизайна?

Edit: Причина пользовательского кода ядра является то, что тест бегуна есть что-то вроде следующего поведения:

foreach(var tc in testcases) 
    foreach(var temp in temperatures) 
     SetTemperature(temp); 
     foreach(var position in positions) 
      GotoPosition(position); 
      DoTestcase(tc); 
+2

Почему бы не использовать стандартную тестовую структуру? Понимание того, почему нынешние рамки «наилучшей практики» не отвечают вашим потребностям, может пролить свет на правильный путь вперед. –

+0

Конечно, я бы сделал это, если бы мог. Основная проблема заключается в том, что тестовые случаи необходимо выполнять на нескольких позициях (для этого есть место для робота) и во многих температурах (термокамера). Это не может быть интегрировано в «стандартные» рамки. – Razer

+3

Очевидно, я не знаю подробностей здесь, но то, о чем вы говорите, звучит как проблема с настройкой теста. Настройка теста может управляться пользовательским кодом с использованием большинства фреймворков (например, XUnit). Если вы не будете запускать сам тестовый код на каком-то странном аппаратном обеспечении, я изо всех сил стараюсь понять необходимость создания ядра тестовой среды, а не расширения существующего. В любом случае наилучшей практикой является почти наверняка практика, реализуемая такими структурами, как XUnit, поэтому вы можете также посмотреть на их код. –

ответ

2

Старые тесты JUnit (в Java, конечно) были основаны на соглашения об именовании, , чем он начал использовать annotatinos (эквивалент атрибута) вместо - , что намного лучше, потому что вам не нужно использовать соглашения об именах для создания тестовой среды, для чего нужны метаданные.

Итак, я думаю, что ваш случай очень похож, Почему в тестовом случае требуется реализовать интерфейс? И вообще, как бы вы отличались между методами тестирования и внутренними частными методами в вашем тестовом случае? Просто используйте атрибуты для этого.

Смежные вопросы