Мне неизвестны какие-либо шаблоны проектов для модульных тестов F # Silverlight 4 (я искал в Интернете шаблоны с помощью «Добавить проект»), поэтому я использую стандартный проект библиотеки F # Silverlight для проведения своих модульных тестов (которые представляют собой просто ссылки на файлыфайлы проекта основного блока тестирования).Я использую xUnit.net Contrib для Silverlight .Так что все компилируется, но я не знаю, как запустить тесты!TestDriven.NET работает для моего обычного проекта модульного тестирования, но не для этого проекта модульного тестирования Silverlight.Я пытался использовать обычный бегун xUnit GUI, но это тоже не работает.Любые идеи?
Обновление
Пользователи xUnit.net Contrib рекомендовали использовать Statlight в качестве автономного консольного бегунка.После добавления System.Xml.Linq в мой тестовый проект с параметром Copy Local = true (моему проекту это не нужно, но Statlight делает это) я смог запустить исполняемый файл, указывающий на мою тестовую сборку, без каких-либо ошибок, за исключением того, что не смог найти ни одноготесты.
Я пробовал много вещей, чтобы попытаться найти тесты.Я дал явные пространства имен для моих тестовых модулей.Я пробовал имена тестовых методов без пробелов.Я пробовал типы с членами экземпляра вместо функций в модулях.Я даже попробовал явный флаг --MethodsToTest
.Ничего не работает.
Я не уверен, что это может быть проблемой с Statlight или xUnit.net Contrib.
Обратите внимание, что я просто пытаюсь проверить простую библиотеку, которая может быть использованапроектами Silverlight и фактически не использует никаких функций Silverlight (действительно, у меня нет опыта работы с Silverlight!).
Обновление 2
Я смогдобавить нормальную сборку xunit в мой проект через NuGet (который «форсирует» его, несмотря на то, что он не был собран для Silverlight), а затем успешно запустить тесты с помощью Testdriven.NET.Но я не уверен, что это "обман".Возможно, не потому, что мои тесты все еще скомпилированы с версией Silverlight моей библиотеки ...?
Обновление 3
Хотя мне все еще не повезло с«законное» решение xunit, я смог заставить Statlight запустить несколько тестов NUnit.За исключением того, что он распознает только тесты методов экземпляра класса, он не распознает тесты функций модуля (в то время как он может нормально их обрабатывать в обычном проекте).Облом.(Я подал выпуск со Statlight)
Обновление 4
Я нашел супер хакерское, но работоспособное решение моей проблемы, но все жев поисках чего-то лучшего, хотя.Все мои тесты - это тесты Xunit (ссылки на файлы для тестового проекта не Silverlight), написанные как функции в модулях, но я не могу заставить Statlight найти какой-либо из тестов.Однако я смог заставить Statlight запускать тесты NUnit, которые написаны традиционным способом как члены экземпляра типа.Таким образом, я смог создать следующий единственный тест NUnit, который находит все тесты Xunit в сборке и вызывает их (поэтому я вижу только один сбойный тест за раз, но кроме этого он работает хорошо):
namespace SilverlightTesting
open Xunit
open NUnit.Framework
[<TestFixture>]
type TestRunner() =
let isFact (attr:obj) =
match attr with
| :? Xunit.FactAttribute as attr when attr.Skip = null -> true
| _ -> false
[<Test>]
member this.Run () =
let assm = System.Reflection.Assembly.GetExecutingAssembly()
let tys = assm.GetTypes()
let mutable count = 0
for ty in tys do
let methods = ty.GetMethods()
for mi in methods do
let attrs = mi.GetCustomAttributes(false)
if attrs |> Array.exists isFact then
printf "running test `%s`..." mi.Name
mi.Invoke(null,null) |> ignore
printfn "passed"
count <- count + 1
printfn "All %i tests passed." count