Действительно важная вещь, с точки зрения компилятора, состоит в том, что она в состоянии разрешить символы. В случае статического метода это должно знать, какой класс заглянуть для него - так как это не связано ни с каким конкретным объектом. Разработчики Java, очевидно, решили, что, так как они могли определить класс объекта, они могли также разрешить класс любого статического метода для того объекта от любого экземпляра объекта. Они принимают решение позволить этому - поколебленный, возможно, наблюдением @TofuBeer - давать программисту некоторое удобство. Другие разработчики языка сделали различный выбор. Я, вероятно, попал бы в последний лагерь, но дело не в этом большой из соглашения мне. Я, вероятно, позволил бы использование, которое упоминает @TofuBeer, но позволявший его моя позиция по не предоставлению доступа от переменной экземпляра менее надежна.
Расширяя ответ Марка Бесси : Мне очень нравится cxxTest, потому что это просто набор C++ заголовочных файлов и Perl скриптов. Пока у вас есть C++ компилятор & Perl, он будет работать практически на любой системе. Он также имеет возможности для интеграции с вашей IDE (хотя я ими не пользовался).
Также, вот хорошая статья Изучение C++ Unit Testing Framework Jungle. Эта заметка потенциально устарела (около 2004 года), но в ней даётся отличный обзор возможностей и примеры использования каждой из следующих фреймворков С++ юнит-тестирования:
Рассматривали ли вы использование CppUnit ?
Здесь представлен обзор сред модульного тестирования для C ++ .
Мы используем Google Mock и Google Test . Я никогда не использовал NUnit, поэтому не могу сказать, насколько он похож на NUnit.
Я рекомендую вам попробовать UnitTest ++:
http://unittest-cpp.sourceforge.net/UnitTest++.html
Я не знаю, похож ли он на NUnit, но он мощный, элегантный и простой в использовании. -использовать.
Я использую Boost.Test . Я использовал CppUnit , но обнаружил, что он работает по принципу Java / Junit, а не по принципу C ++. Например, использование методов настройки и разрыва вместо конструкторов и деструкторов. Также поддержка Test Case / Fixture была немного трудоемкой, поскольку C ++ не поддерживает отражение.
Я обнаружил, что Boost.Test лучше подходит для кода C ++, который я тестировал. Кроме того, он намного мощнее. Через некоторое время я перенес все свои тесты CppUnit в Boost.Test, это заняло около дня, и я не оглядывался назад.
Насколько я знаю, человек, стоящий за cppunit, также написал cxxunit , который является больше C ++ esque.
There is a good one called CPPUnit. It started its life as a port of JUnit to C++ by Michael Feathers. I have worked with it and it is great. Note though, that unit testing in C++ is harder than in other languages.
В блоке есть относительно новый ребенок, который называется WinUnit . У меня не было времени самому попробовать, но, возможно, стоит взглянуть.
Googletest очень похож по использованию на xUnit. Googlemock - безусловно, лучший фреймворк для имитации C ++. Библиотеки кроссплатформенные, имеют отличную документацию и активную базу пользователей. Все, что вам нужно, это совместимый компилятор C ++, который может обрабатывать шаблоны.
Майкл Фезерс, первоначальный автор CppUnit, теперь рекомендует CppUnitLite, который представляет собой простой фреймворк. Как только я потчевал его радостями Googlemock на ACCU 2010 , я надеюсь, он примет это: -)
Вы ничего не найдете К сожалению, очень похож на NUnit. Поскольку C ++ не обладает такой сильной способностью к отражению, процесс определения тестов должен быть несколько более явным, вместо использования атрибутов, как в NUnit.
Мне нравится cxxtest , потому что его легко установить вверх и не требует ручной тестовой регистрации.