Действительно ли это возможно к модульному тесту класс, который выполняет вызовы P/Invoke?

Как будто вы пытаетесь получить доступ к объекту, который является null. Рассмотрим ниже пример:

TypeA objA;

. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException, что имеет смысл.

См. Также этот пример:

String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
7
задан Rytmis 10 September 2008 в 05:19
поделиться

2 ответа

Инструкция: не тестируйте код, который Вы не написали.
Вы не должны быть обеспокоены реализацией WinAPI, не работающей (по всей вероятности, она работает как ожидалось). Ваше беспокойство должно тестировать 'Проводное соединение' т.е. если Ваш код выполняет правильный вызов WinAPI. В этом случае все, в чем Вы нуждаетесь, должно дразнить интерфейс и позволять ложной платформе сказать, были ли Вы вызов сделаны с правильными параметрическими усилителями. Если да, Вы сделаны.

  • Создайте IWinAPIFacade (с соответствующими методами WinAPI) и реализация CWinAPIFacade.
  • Запишите тест, который включает насмешку для IWinAPIFacade, и проверьте, что соответствующий вызов выполняется
  • Запишите тест, чтобы гарантировать, что CWinAPIFacade создается и включается как значение по умолчанию (в нормальном функционировании)
  • Реализуйте CWinAPIFacade, который просто слепые делегаты в Платформе Вызывают вызовы - никакая потребность автопротестировать этот слой. Просто сделайте ручную проверку. Надо надеяться, это не будет часто изменять это, и ничто не повреждается. Если Вы находите, что это делает в будущем, забаррикадируйте его с некоторыми тестами.
12
ответ дан 6 December 2019 в 21:22
поделиться

Я не уверен, следую ли я за Вами.. Вы не хотите тестировать PInvoke сами (Вы не записали это), таким образом, Вы хотите протестировать это, класс обертки работает как ожидаемое право?

Так, просто создайте свой интерфейс в классе обертки и тесте против этого?

С точки зрения необходимости настроить пользователей и т.д., я думаю, что это было бы маркером, который необходимо укусить. Это казалось бы нечетным для насмешки обертки вызов PInvoke, так как Вы просто просто подтвердите, и интерфейс существует :)

0
ответ дан 6 December 2019 в 21:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: