Ошибка модульного теста F#: xUnit.net/TestDriven.Net

Итак, следующее, что я получил от Pluralsight, и парень, представляющий курс, по-видимому, запускает код без заминок, однако, когда я запускаю его, я получаю сообщение об ошибке:

Ошибка теста «T: Messaging»: не удалось найти тип с названием «Messaging»

Тест не пройден 'T: Не удалось найти тип с именем

Любые идеи (ценится)?

namespace Ploeh.Samples

open System

module Messaging =    
    type Envelope<'a> = {
        Id      : Guid
        Created : DateTimeOffset
        Item    : 'a }

    let envelop getId getTime item = {
        Id = Guid "1CF889F8-201F-44DF-BC86-77227651D3EE"
        Created = DateTimeOffset.MinValue
        Item = item }

module MessagingTests =
    open Xunit

    type Foo = { Text : string; Number : int }

    [<Fact>]
    let ``enevelope returns correct results`` () =
        let getId _ = Guid "1CF889F8-201F-44DF-BC86-77227651D3EE"
        let getTime _ = DateTimeOffset( 636322011751405346L, 
                                        TimeSpan.FromHours(-4.0) )
        let item = { Text = "Bar"; Number = 42 }

        let actual = Messaging.envelop getId getTime item

        Assert.Equal ( Guid "1CF889F8-201F-44DF-BC86-77227651D3EE",
                       actual.Id )
        Assert.Equal ( DateTimeOffset( 636322011751405346L, 
                                       TimeSpan.FromHours(-4.0) ),
                       actual.Created )
        Assert.Equal ( item, actual.Item )  

person Sasha Babaei    schedule 05.06.2017    source источник
comment
Покажите стек вызовов, пожалуйста.   -  person Fyodor Soikin    schedule 05.06.2017
comment
Я попытался воспроизвести ошибку, но не смог. Тест был запущен, но не прошел из-за того, что fact.Created был DateTimeOffset.MinValue, что, как мне кажется, является ожидаемым результатом.   -  person Foole    schedule 05.06.2017
comment
Вот что меня беспокоит, @Foole ... В идеале человек хотел бы знать, почему у него что-то не работает, а у других все отлично. Возможно, это проблема с TestDriven.Net и моей версией .Net!   -  person Sasha Babaei    schedule 05.06.2017
comment
Похоже, это может быть проблема с testdriven.net. проверьте ошибку для получения более подробной информации.   -  person Rahul P Nath    schedule 12.06.2018
comment
Однако запуск всех тестов в решении работает. Только при независимом запуске тестов он терпит неудачу   -  person Rahul P Nath    schedule 12.06.2018


Ответы (1)


Мне удалось заставить его работать, разделив тесты на отдельный файл и модуль верхнего уровня. По какой-то причине ничего, кроме этой «настройки», не работает, например, отдельный файл, но в модуле более низкого уровня, или объявления пространства имен и модулей по отдельности... Я не уверен, что это что-то конкретное, чтобы сказать, что моя цель .Net 4.7, а не то, что использовал инструктор, или проблема с Visual Studio 2017, или что-то еще. Кажется, что TestDriven.Net имеет проблемы с системой пространства имен/модулей и путается с ними...

В первом файле:

namespace Ploeh.Samples

open System

module Messaging =    
    type Envelope<'a> = {
        Id      : Guid
        Created : DateTimeOffset
        Item    : 'a }

    let envelop getId getTime item = {
        Id = Guid "1CF889F8-201F-44DF-BC86-77227651D3EE"
        Created = DateTimeOffset.MinValue
        Item = item }

И во втором файле:

module Ploeh.Samples.MessagingTests 

open System
open Messaging
open Xunit

type Foo = { Text : string; Number : int }

[<Fact>]
let ``enevelope returns correct results`` () =
let getId _ = Guid "1CF889F8-201F-44DF-BC86-77227651D3EE"
let getTime _ = DateTimeOffset( 636322011751405346L, 
                                TimeSpan.FromHours(-4.0) )
let item = { Text = "Bar"; Number = 42 }

let actual = Messaging.envelop getId getTime item

Assert.Equal ( Guid "1CF889F8-201F-44DF-BC86-77227651D3EE",
               actual.Id )
Assert.Equal ( DateTimeOffset( 636322011751405346L, 
                               TimeSpan.FromHours(-4.0) ),
               actual.Created )
Assert.Equal ( item, actual.Item )  
person Sasha Babaei    schedule 05.06.2017