System.Text.Json выдает исключение TypeInitializationException в модульных тестах платформы .NET.C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 System.Text.Json выдает исключение TypeInitializationException в модульных тестах платформы .NET.

Сообщение Anonymous »

Я создал (свежее) решение в Visual Studio 2022 17.12.4 со следующими проектами:
  • ClassLibrary1 (.NET framework 4.8)

    Установлен ли System.Text.Json версии 9.0.1
  • Имеет статический метод Just.DoIt, который звонки JsonSerializer.Serialize()
[*]ConsoleApp1 (.NET framework 4.8)
  • Имеет ссылку на ClassLibrary1
  • Вызывает статический метод Just.DoIt
[*]WpfApp1 (платформа .NET) 4.8)
  • Имеет ссылку на ClassLibrary1
  • Вызывает статический метод Just.DoIt
[*]UnitTests1 (.NET framework 4.8)
  • Имеет ссылку на ClassLibrary1
  • Вызывает статический метод Just.DoIt в модульном тесте

Вот это Just. Код DoIt:

Код: Выделить всё

public static class Just
{
public static void DoIt()
{
var person = new Person { FirstName = "Jan", Age = 37, };
Console.WriteLine(person.ToString());
string json = JsonSerializer.Serialize(person);
Console.WriteLine(json);
var person2 = JsonSerializer.Deserialize
(json);
Console.WriteLine(person2.ToString());
}
}

public class Person
{
[JsonPropertyName("age")]
public int Age { get; set; }
[JsonPropertyName("firstname")]
public string FirstName { get; set; }
public override string ToString() { return $"{FirstName} ({Age})"; }
}
Консольное приложение и приложение wpf работают нормально, но модульный тест выдает исключение при достижении JsonSerializer.Serialize():

Код: Выделить всё

Test method UnitTests1.JustDoItTest.TestMethod1 threw exception:
System.TypeInitializationException: The type initializer for 'System.Text.Json.JsonSerializer' threw an exception. ---> System.TypeInitializationException: The type initializer for 'PerTypeValues`1' threw an exception. ---> System.IO.FileNotFoundException: Could not load file or assembly 'System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.
Я пробовал следующие действия, которые не решили проблему:
  • Установка System.Runtime.CompilerServices.Unsafe 6.1.0 в каждом проекте
  • Создание App.config с перенаправлениями привязки в каждом проекте.
а также:
  • Выполнение тестов вне Visual Studio с помощью dotnet test.
  • Добавление true в CSPROJ-файл модульных тестов.
  • Обновлен MSTest.TestFramework и MSTest.TestAdapter с 2.2.10 по 3.7.1.
  • Установлен Microsoft.TestPlatform в проекте модульных тестов.
    < li>Все обычные шаги, такие как: очистка, перестройка, восстановление и перезапуск Visual Studio.
Знаете ли вы, как я могу решить эту проблему? и не получить исключение в модульном тесте проект?

Подробнее здесь: https://stackoverflow.com/questions/793 ... unit-tests
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»