NUnit не запускает мои тестовые примеры

У меня есть тестовый пример, который выглядит так:

namespace UnitTests

[<TestFixture>]
module ValidatorTests = 

    [<Test>]
    let VerifyBasicFunctionality () = 
        Assert.That(bool)
        Assert.That(bool)

и когда я пытаюсь запустить его в проводнике тестов Visual Stuido, ничего не происходит (даже с тестовым адаптером для NUnit 3) и просто говорит «Успешная сборка», и тесты не обнаружены. Затем, когда я запускаю из командной строки с помощью nunit-console runner (пробовал с v.1, v.2, v.4), я получаю что-то другое:

$ nunit-console4 bin/Release/UnitTests.dll
NUnit version 2.4.8
Copyright (C) 2002-2007 Charlie Poole.
Copyright (C) 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov.
Copyright (C) 2000-2002 Philip Craig.
All Rights Reserved.

Runtime Environment - 
   OS Version: Unix 15.6.0.0
  CLR Version: 4.0.30319.42000 ( 4.4.2 (Stable 4.4.2.11/f72fe45 Thu Aug 11 06:03:25 BST 2016) )

.N.N.N
Tests run: 0, Failures: 0, Not run: 3, Time: 0.011 seconds

Когда я запускаю это с флагом -xmlConsole, я получаю следующее:

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!--This file represents the results of running a test suite-->
<test-results name="bin/Release/UnitTests.dll" total="0" failures="0" not-run="3" date="2016-09-08" time="10:26:00">
  <environment nunit-version="2.4.8.0" clr-version="4.0.30319.42000" os-version="Unix 15.6.0.0" platform="Unix" cwd="/SOMEUSER/SOMEPATH/UnitTests" machine-name="gmaini-m.jet.local" user="SOMEUSER" user-domain="SOMELOCALBOX" />
  <culture-info current-culture="en-US" current-uiculture="en-US" />
  <test-suite name="bin/Release/UnitTests.dll" success="True" time="0.010" asserts="0">
    <results>
      <test-suite name="UnitTests" success="True" time="0.008" asserts="0">
        <results>
          <test-suite name="ValidatorTests" success="True" time="0.001" asserts="0">
            <results>
              <test-case name="UnitTests.ValidatorTests.VerifyBasicFunctionality" executed="False">
                <reason>
                  <message><![CDATA[UnitTests.ValidatorTests is an abstract class]]></message>
                </reason>
              </test-case>
              <test-case name="UnitTests.ValidatorTests.VerifyBasicOtherFunctionality" executed="False">
                <reason>
                  <message><![CDATA[UnitTests.ValidatorTests is an abstract class]]></message>
                </reason>
               </test-case>
               <test-case name="UnitTests.ValidatorTests.VerifyBasicSomeFunctionality" executed="False">
                <reason>
                  <message><![CDATA[UnitTests.ValidatorTests is an abstract class]]></message>
                </reason>
              </test-case>
            </results>
          </test-suite>
        </results>
      </test-suite>
    </results>

Любая идея, почему он, кажется, обнаруживает тесты, я могу получить к ним доступ с помощью -run="Namespace.Module.Function" и поговорить о фикстуре с -fixture="Namespace", но он не запустит их? Является ли UnitTests.ValidatorTests.VerifyBasicFunctionality is an abstract class намеком на то, что есть какая-то проблема взаимодействия C#?

Спасибо за ваше время :)


person Gina    schedule 08.09.2016    source источник


Ответы (1)


Это исправление было:

namespace UnitTests

[<TestFixtureAttribute>]
type ValidatorTests () =

    [<Test>]
    member __.VerifyBasicFunctionality() =
        Assert.That(bool)
        Assert.That(bool)

В основном, делая это объектно-ориентированным. Так что моя гипотеза была верна.

person Gina    schedule 08.09.2016
comment
Модуль F# по сути является статическим классом, но старая (на самом деле древняя) версия NUnit, которую вы используете, не знает о статических классах и неверно интерпретирует их как абстрактные из-за того, как .NET реализует статические классы. - person Charlie; 08.09.2016
comment
@Charlie: верно, но установщик Mono для macOS добавляет NUnit 2.4.8 вместо 2.6.4 (последний совместим с модулями, первый — нет) - person knocte; 04.09.2018
comment
Mono устанавливает 2.4.8 для своих целей (используется при сборке Mono). Для пользователей, выполняющих тесты, это не то, что вы должны использовать. В этом отношении NUnit 2.6.4 также является устаревшим. Попробуйте NUnit 3.10.1. :-) - person Charlie; 05.09.2018