Visual Studio 2017 не обнаруживает тесты NUnit, когда класс тестов наследуется от класса, реализующего NHibernate

У меня возникла эта проблема, которую я не могу решить, я обновляюсь с NUnit 2.6.4 до 3.9.0, мой тестовый проект имеет несколько тестовых классов, и когда я меняю версию NUnit, некоторые из моих тестов не были обнаружены test explorer, после некоторых исследований, все отсутствующие тесты наследуют или каким-то образом реализуют пакет Nuget для тестирования NHibernate и Spring NUnit. Когда я удаляю наследование, тесты обнаруживаются. Никакое решение не подходит для этого.

Версия пакетов Nuget: Spring.Testing.NUnit 2.0.1 NUnit 3.9.0 NHibernate 3.3.3.4 NUnitTestAdapter 3.9

Это мой класс NHibernate:

using System;
using NHibernate;
using Spring.Data.NHibernate.Generic;
using Spring.Data.NHibernate.Support;
using Spring.Testing.NUnit;

namespace Testproject{
    public class NHibernateTestClass : AbstractTransactionalSpringContextTests
    {
    //Some methods here
    }


}

Это мой тестовый класс:

using System;
using System.Collections.Generic;
using System.Linq;
using NUnit.Framework;

namespace Testproject{
    public class TestClass: NhibernateTestClass{
        //Some test methods here
    }
}

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

Изменить:

Забыл добавить, что мой тестовый класс Hibernate наследовал этот весенний тестовый класс.


person joseatchang    schedule 04.01.2018    source источник


Ответы (3)


Просто установите NUnit3TestAdapter через nuget.

И добавьте атрибуты NUnit ([TestFixture], [Test]) перед объявлением класса и метода.

person Igor Zhurba    schedule 04.01.2018
comment
Он у меня уже установлен, есть более 3000 тестов, но не обнаруживаются только те, которые унаследованы от NHibernateTestClass. - person joseatchang; 04.01.2018
comment
В порядке. Может быть, я неправильно вас понял. - person Igor Zhurba; 04.01.2018
comment
Возможно, вам нужно добавить некоторые атрибуты NUnit (например, [TestFixture] и [Test]) перед объявлением класса и метода. - person Igor Zhurba; 04.01.2018
comment
Я уже пробовал, опять безрезультатно. Эта проблема сводит меня с ума. - person joseatchang; 04.01.2018

Ну, у меня похожая проблема, но с Visual Studio 2015 (сообщество)

У меня есть 2 тестовых класса:

namespace WarehouseTemplate.Tests
{
    [TestFixture]
    public class Test1  
    {


        [SetUp]
        public void Init()
        {

        }

        [Test()]
        public void Can_generate_schema()
        {
            var cfg = new Configuration();

            cfg.Configure();

            new SchemaExport(cfg).Execute(true, true, false);

        }
    }
}

С можно найти в проводнике тестов, а потом у меня есть этот

namespace WarehouseTemplate.Tests
{
    [TestFixture]
    public class TestDao : AbstractDaoIntegrationTests
    {
        private IProductDao productDao;

        private ISessionFactory sessionFactory;

        // These properties will be injected based on type
        public IProductDao ProductDao
        {
            set { productDao = value; }
        }
        public ISessionFactory SessionFactory
        {
            set { sessionFactory = value; }
        }

        [SetUp]
        public void Init()
        {
        }

        [Test()]
        public void CustomerDaoTests()
        {//logic here

        }
    }
}

где выглядит AbstractDaoIntegrationTests

namespace WarehouseTemplate.Tests
{
    [TestFixture]
    public class AbstractDaoIntegrationTests : AbstractTransactionalDbProviderSpringContextTests
    {
        protected override string[] ConfigLocations
        {
            get
            {
                return new string[]
                    {
                        "referenceString"
                    };
            }
        }
    }
}

Но я не могу найти этот тест только первый:

Адаптер NUnit 3.9.0.0: выполнение теста запущено Запуск всех тестов в E:\Zabava\C# programy\WarehouseTemplate\WarehouseTemplate\bin\Debug\WarehouseTemplate.exe NUnit3TestExecutor преобразовал 1 из 1 тестовых случаев NUnit NUnit Adapter 3.9.0.0: выполнение теста завершено

До сих пор любой совет для возможной проблемы заключается в том, что Spring NET имеет другую версию NUNIT, для которой требуется точная ссылка или адаптер NUnit.

person kronas    schedule 11.01.2018
comment
Поскольку мы проводим глубокое исследование, spring.test.nunit не обновлялся с 2015 года, поэтому вполне возможно, что существует проблема несовместимости, мы работаем над обходным путем, избегая наследования тестовых классов nunit от spring. мы сделали все тесты, чтобы быть обнаруженными, теперь у нас есть проблема, чтобы переписать наши транзакции из-за этого. - person joseatchang; 11.01.2018
comment
Я подумал, может быть, обновить NUNIT до той же версии, что и Spring Net, а затем использовать более старый адаптер. Или, как вы говорите, делайте свою собственную транзакцию и вводите и т. Д., Что вам нужно. - person kronas; 11.01.2018

Я нашел ответ и решение. Я только что установил NUnit 2.6.3). Я вручную выбираю более старую и собственную версию адаптера, теперь я могу видеть свои тесты.

введите здесь описание изображения

person kronas    schedule 12.01.2018
comment
Вы опять откатились на 2.6.4? В нашем случае мы хотим обновиться, поэтому ищем правильное решение, а не обходной путь. - person joseatchang; 13.01.2018