Тестовый проект NUnit не может загрузить сборку для System.Windows.Forms - PullRequest
0 голосов
/ 31 мая 2019

У меня есть тестовый проект NUnit, предназначенный для модульного тестирования, который имеет Target Framework .Net Core 2.1.Этот тестовый проект содержит ссылки на два других проекта, один из которых - приложение на основе Windows Form , а другой - приложение на основе Class Library для взаимодействия с базой данных.Оба этих проекта имеют целевую платформу .Net Framework 4.6.1

Я пишу тест для тестирования метода приложения, основанного на Class Library , для проверки выходных данных метода.Но отображается следующая ошибка:

'System.IO.FileNotFoundException: не удалось загрузить файл или сборку' System.Windows.Forms, версия = 4.0.0.0, культура = нейтральная, PublicKeyToken = b77a5c561934e089 ',Система не может найти указанный файл. '

Я попробовал следующие исправления, но ни одно из них не сработало.

  • Удаление ссылок проекта и добавление их снова
  • Изменение цели платформы сборки с AnyCPU на X86 и x64
  • Добавление зависимых сборок тег внутрьфайл .config.(Интересно, что .NET Core 2.1 не предоставляет файл .config)

Это тестовый класс (Test_DataClasses.cs) ,

using System;
using System.Collections.Generic;
using System.Text;
using NUnit.Framework;
using System.Data.SQLite;
using SharedDataClasses;
using MantechAutomationControl;
using System.IO;
using System.Reflection;

namespace MAC_Testing
{
[TestFixture]
class Test_DataClasses
{
    #region Tests
    [Test]
    public void t_m_initializeDatabase()
    {
        //Assign
        string v_dbLocation = Path.Combine("M:\\For_Jabed\\MAC\\MAC\\MantechAutomationControl\\bin\\Debug\\", "DB.sqlite");
        //Act
        DataClasses_v2.m_initializeDatabase();
        //Assert
        Assert.That(new FileInfo(v_dbLocation), Does.Exist);
    }
    #endregion
}
}

И этот метод пытается проверить приведенный выше тест ,

public static class DataClasses_v2
{
    #region Variables 
    #endregion
    #region Methods
    public static void  m_initializeDatabase()
    {
        string v_executableLocation = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
        string v_dbLocation = Path.Combine(v_executableLocation, "DB.sqlite");
        if (!File.Exists(v_dbLocation))
        {
            DialogResult o_createDBFileDialogBox = MessageBox.Show("Could not find the database in the expected location:\n" + v_dbLocation + "\n\nWould you like to create a new blank database file?", "Warning", MessageBoxButtons.YesNo);
            if (o_createDBFileDialogBox == DialogResult.Yes)
            {
                SQLiteConnection.CreateFile(v_dbLocation);
                using (SQLiteConnection o_dbConnection = new SQLiteConnection(@"DataSource=" + v_dbLocation + ";Version=3;"))
                {
                    o_dbConnection.Open();
                }
            }
            else
                return;
        }
    }

Я не совсем понимаю, что здесь происходит.Хотя следует отметить, что на самом деле я работал над тем, чтобы использовать Nunit Form dll для работы с формами (DialogBox), так как тестируемый метод имел DialogBox для работы.

В тестовом проекте есть другой класс, и тесты, написанные внутри этого класса, отлично работают для того же целевого проекта на основе библиотеки классов, чтобы проверить другую функцию.

Надеюсь, кто-нибудь сможет объяснить, что здесь происходит.

...