У меня есть тестовый проект 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 для работы.
В тестовом проекте есть другой класс, и тесты, написанные внутри этого класса, отлично работают для того же целевого проекта на основе библиотеки классов, чтобы проверить другую функцию.
Надеюсь, кто-нибудь сможет объяснить, что здесь происходит.