2015-09-08 3 views
3

Я создал решение с 2 проектов, FSharpCalled (который содержит метод «disBonjour», преобразуя строку в другой), # библиотеки F и FSharpTest показано ниже:Невозможно запустить тесты в Visual Studio

enter image description here

Вот FSharpCalled:

here

проблема заключается в том, что я не могу запустить тесты; как показано на первом снимке экрана, появляется сообщение об ошибке «Основной модуль пуст, поэтому при выполнении ничего не произойдет».

Я попытался изменить некоторые свойства, но безуспешно.

EDIT:

вот результат ... блин!

enter image description here

+2

Пожалуйста, не публикуйте скриншоты своего кода - разместите сам код: http://stackoverflow.com/editing-help#code-spans –

ответ

1

главный модуль пуст, так что ничего не будет происходить при исполнении

происходит, когда у вас есть консольный проект без [<EntryPoint>]. Поэтому вам нужно либо объявить такой основной метод, либо изменить проект как проект библиотеки.

Update

использовать любой 3-й тест партия бегун Есть (TestDriven, ReSharper с NUnit интеграции, ...) или nUnit VS Test Adapter? VS не будет распознавать тесты nUnit из коробки.

+0

ok, я изменил тип проекта (в библиотеку), но когда я запускаю тесты, VS говорит мне, что тест не найден. – lolveley

+0

ОК, это изменено, но ошибка остается (тесты еще не найдены) – lolveley

+0

@lolveley см. Обновленный ответ – CaringDev

3

Классы

При использовании let связывания внутри класса, тем let связывание является частным (т.е. не является общедоступной). Поэтому вы не можете использовать его в качестве метода тестирования.

Если вы хотите использовать NUnit с классом в F #, вы будете иметь, чтобы украсить это метод с [<Test>] атрибута:

[<TestFixture>] 
type TestClass() = 
    [<Test>] 
    member this.SomeTest() = 
     // Test goes here 
     () 

Последний раз я использовал NUnit, вы также были к добавьте атрибут [<TestFixture>] к самому классу, поэтому я добавил это также. Обычно я не использую NUnit, поэтому я не знаю, требуется ли еще.

Модули

Вы также можете написать свои тесты в модулях, в этом случае вы можете украсит let связанной функции с атрибутом [<Test>], так как в этом случае он компилирует к общественности, статический член:

module MyTests = 
    [<Test>] 
    let ``a function in a module that works as a test``() = 
     // Test goes here 
     () 

По крайней мере, тестовый бегун, который я использую (TestDriven.net), обнаруживает и запускает этот тест. Я не знаю, будут ли это делать и другие испытательные бегуны.

Для общего ознакомления с модульными испытаниями с помощью F # и многое другое вы можете рассмотреть возможность просмотра моего Pluralsight course called Unit Testing with F#.

+0

Я думаю, проблема связана с структурой решения, а не с проектом F # , В самом деле, решение построено на основном проекте C# WPF, на котором я добавил библиотеку F # (содержащую тестируемую функцию) и проект тестирования F #. У вас есть идея? – lolveley

+0

@lolveley Вы объявили свой класс внутри модуля (первая строка). Что произойдет, если вы измените это на пространство имен? –

+0

Я получаю ту же ошибку (пустой модуль => ничего не произойдет при выполнении). Тесты не найдены. – lolveley

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