Как вы создаете модульные тесты в F #? Обычно я использую часть UnitTest Visual Studio с атрибутами [TestClass] и [TestMethod] и использую Test View для их запуска. Я знаю, что могу просто создать файл сценария и запустить его, но мне нравится, как он обрабатывается в настоящий момент.Как обрабатывать модульные тесты в F #?
ответ
Я предпочел бы использовать FsUnit или FsTest писать тесты в F #, он чувствует себя более естественно, чем OO xUnit испытаний типа.
EDIT 2014: Теперь я считаю, что FsUnit/FsTest является в основном бесполезным синтаксическим сахаром. И «более естественный, чем OO» не означает абсолютно ничего. Несколько месяцев назад я написал свои текущие мысли по тестированию here (я рекомендую читать всю цепочку).
Отъезд fscheck. Это порт Quickcheck Хаскелла. Fscheck позволяет указать свойства, которые должна удовлетворять функция, которая затем будет проверяться на «большое количество случайных случаев».
Это то, что вы не можете легко сделать с императивным языком, как C#.
Взгляните на Pex: http://research.microsoft.com/en-us/projects/Pex/ –
@Mauricio: Я согласен с тем, что это возможно делать то, что делает FsCheck (случайно генерируя тестовые примеры) в настройке OO (еще один пример: RANDOOP). Возможно, в один прекрасный день у нас будет один язык спецификации (который выглядит намного лучше в функциональной настройке в моем очень предвзятом мнении), который может генерировать как случайно сгенерированные случаи, так и охватывать такие случаи, как Pex. –
Теперь FsCheck имеет интерфейс C#, поэтому вы можете использовать наиболее важные функции FsCheck на C#. –
Попробуйте XUnit.net
Согласен. (только?) xUnit.NET может запускать тестовые примеры в статических методах, поэтому, если вы хотите оставаться в основных платформах .NET-тестов, которые требуют минимальных усилий. –
MbUnit может сделать это тоже –
Начиная с версии 2.5, NUnit позволяет использовать static members as tests. Кроме того, класс TestFixtureAttribute класса only necessary for generic or classes with non-default constructors. NUnit также имеет backward-compatible convention, что тестовый член может начинать со слова «тест» вместо использования TestAttribute, поэтому вы можете почти написать идиоматический F # с NUnit> 2.5.
Update Вы можете увидеть некоторые примеры тестов без TestFixtureAttribute в Cashel library. Я продолжал использовать TestAttribute, так как кажется, что несколько тестовых бегунов правильно подбирают тесты, когда их нет, так что часть сообщения NUnit может быть неправильной или, по крайней мере, вводить в заблуждение.
Ryan, вы хотели бы разработать пример теста в F #? Или ссылка на сайт, который показывает модульные тесты F # без TestAttribute или TestFixtureAtrribute? –
@David Я добавил ссылку на мои тесты для Cashel. – 2011-01-24 23:21:16
Возможно, вы захотите попробовать NaturalSpec. Это F # UnitTest-Framework поверх NUnit.
Я использую комбинацию xUnit.net, TestDriven.Net (Visual Studio надстройка для запуска тестов, бесплатно «студенты, разработчики с открытым исходным кодом и пользователей пробных»), и моей библиотекой собственного открытым источником Unquote (который также работает с NUnit и любая другая основанная на исключениях структура утверждения). Это удалось большой и начать работу очень просто:
- Скачать и установить TestDriven.Net
- Скачать xUnit.net, распаковать в любое место и запустить xunit.installer.exe для интеграции с TestDriven.Net
- Скачать Unquote, распакуйте в любое место
- Создать проект в рамках вашего решения для модульных тестов
- Добавить ссылки на xunit.dll и Unquote.dll (от распакованы загрузки) в тестовом проекте блока
Ниже приведен простой пример файла .fs в модульном тестовом проекте, содержащем тесты модульного стиля xUnit.net/Unquote.
module Tests open Swensen.Unquote open Xunit [<Fact>] let ``description of first unit test``() = test <@ (11 + 3)/2 = String.length ("hello world".Substring(4, 5)) @> [<Fact>] let ``description of second unit test``() = let x = List.rev [1;2;3;4] x =? [4;3;1;2]
Выполнить все модульные тесты в проекте, щелкнув правой кнопкой мыши проект в обозревателе решений и выберите Run Test (ов).Оба предыдущих примера тестов потерпит неудачу со следующим напечатанный в окне Visual Studio Output:
------ Test started: Assembly: Tests.dll ------ Test 'Tests.description of second unit test' failed: [4; 3; 2; 1] = [4; 3; 1; 2] false C:\Solution\Project\Tests.fs(12,0): at Tests.description of second unit test() Test 'Tests.description of first unit test' failed: (11 + 3)/2 = String.length ("hello world".Substring(4, 5)) 14/2 = String.length "o wor" 7 = 5 false C:\Solution\Project\Tests.fs(7,0): at Tests.description of first unit test() 0 passed, 2 failed, 0 skipped, took 1.09 seconds (xUnit.net 1.7.0 build 1540).
В VS2013 вы можете использовать ниже.
open Microsoft.VisualStudio.TestTools.UnitTesting
[<TestClass>]
type testrun() =
[<TestInitialize>]
member x.setup() =
//your setup code
[<TestMethod>]
member x.yourTestName() =
//your test code
Подсказка: если вы ищете тестирование модуля UI, вы можете использовать эту настройку с Canopy.
Это должен быть принятый ответ. Это использует встроенные функции тестирования модулей. Кроме того (и не очевидно), этот подход требует добавления ссылки на Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll. – wizulus
@alancnet это только встроенный, если вы используете Visual Studio. – Yawar
- 1. PrestaShop Модульные модульные тесты
- 2. Как найти модульные тесты
- 3. Модульные тесты в TDD
- 4. Модульные тесты в golang
- 5. Модульные тесты в java
- 6. Модульные тесты в Python
- 7. Как организовать интеграционные тесты и модульные тесты
- 8. Пробные и модульные тесты
- 9. Как писать модульные тесты, тесты параллелизма инварианты
- 10. Как написать .NET-модульные тесты?
- 11. Как отлаживать модульные тесты scala.js?
- 12. Как написать многопоточные модульные тесты?
- 13. Как написать «грязные» модульные тесты?
- 14. Как создать гибкие модульные тесты?
- 15. Как отлаживать модульные тесты Django?
- 16. Как правильно выполнить модульные тесты
- 17. Модульные тесты сервлета
- 18. Модульные тесты и функциональные тесты в CodeIgniter
- 19. Как написать параллельные модульные тесты
- 20. xcode 4.3 модульные тесты
- 21. flux store - модульные тесты
- 22. WCF MSMQ Модульные тесты
- 23. Модульные тесты Python: TestCaseSource
- 24. Когда запускать модульные тесты?
- 25. Модульные тесты Visual Studio
- 26. Akka.net и модульные тесты
- 27. Зависимые модульные тесты
- 28. Модульные тесты всегда прерваны
- 29. EntityFunctions.TruncateTime и модульные тесты
- 30. Модульные тесты приложений facebook
[Эта недавняя моя статья] (http://fsharpnews.blogspot.com/2011/01/testing-behaviour-driven-development.html) описала это и многое другое (тестирование BDD из F #). –
Вот где начать: http://bit.ly/1JhEbA7 –