Testsources - это инструмент управления тестовым файлом для .NET Core и .NET Framework
Testsources упрощает обработку, организовывает и использует тестовые файлы в тесте .NET. Он значительно упрощает обычную работу по созданию необходимости настройки инструмента управления файлами, реализации проверки и обеспечения надлежащего доступа к файлам и его содержимому ... их необходимо настраивать вручную на каждом тестовом проекте, который управляет файлами любого рода, потребляя время и повторяющийся код. Это зло. Но не более, вот тесты, чтобы помочь.
Чтобы начать, установите пакет Testsources Nuget:
dotnet add package TestSources В корне проекта добавьте новую папку с именем « __testsources__ ». Это должно быть в нижнем регистре, с двумя подчеркивающими символами « _ » до и после. В нашей папке Tessources создайте текстовый файл с именем «atextfile.txt» и внутри добавьте «немного текста» или любой текст вашего вкуса.
Чтобы получить этот тестовый файл и использовать его в тестах вашего устройства (или интеграции), следуйте следующему шагу:
Вставьте тесты get -file ratement TestSource.GetFile("aTextFile.txt"); в ваш модульный тест.
Пример:
/// <summary>
/// Tests if the test file contains some text.
/// </summary>
[ Fact ]
public void TestThatTheTextFileContainsText ( )
{
// arrange
string fileName = "aTextFile.txt" ;
// act
string textInsideTheFile =
TestSource . GetFile ( fileName )
. AsString ( ) ;
// Assert
Assert . NotEmpty ( textInsideTheFile ) ;
} Оператор TestSource.GetFile() получит файл с указанным именем, расположенным в папке « __testsources__ ». Затем AsString() получит свое содержимое и доставит их готовые к использованию в строковой форме с кодированием UTF-8. (это тоже настраивается)
Вы можете создавать папки в папке « __testsources__ », без какого -либо ограничения, за исключением того, что настроено вашей операционной системой.
То же самое относится и к файлам, вы можете добавить их на любом уровне и использовать свое воображение, чтобы организовать ваши тестовые файлы, пока он не подойдет вам.
Заявление TestSource.GetFile(filename, true) получит любой файл, расположенный в рамках корневого каталога TestSources, учитывая, что он существует, и вы напечатали его должным образом.
Кроме того, вы можете получить ссылку на папку с аналогичным утверждением:
TestSource.GetFolder(foldername) найдет папку с именем foldername в корне корневого каталога TestSources, тогда как TestSource.GetFile(filename, true) найдет именованную папку в любой из подпапников.
Файлы выполняют интерфейс ITestSourceFile , и это позволяет нам проверить его родителя, получить имя файла, полное имя, включая путь, а затем некоторые расширения, такие как:
OpenRead() - открывает файл для чтения возврата потока файла.AsString() - считывает текущий файл и возвращает его контент в качестве строки с кодированием UTF8 по умолчанию, который может быть переопределен.AsByteArray() - читает текущий файл и возвращает байт -массив своего контента.AsFileStream() - считывает текущий файл и возвращает к нему FileStream.AsMemoryStream() - читает текущий файл и возвращает его содержимое в виде памяти.AsStream() - считывает текущий файл и возвращает его содержимое в качестве потока.GetHash() - возвращает хэш файла, учитывая криптографический алгоритм хеш -хеш.AsType<T>() - Возвращает содержание файла в качестве конкретного типа, десериализуя его содержание JSON.AsJson() - читает текущий файл и возвращает его контент в качестве строки JSON с кодированием UTF8 по умолчанию, который может быть переопределен. Папки или каталоги выполняют интерфейс ITestSourceDir , и это позволяет нам проверять его родителя, получить имя папки, полное имя, включая путь, а затем некоторые расширения, такие как:
GetFiles() - Возвращает список файлов, содержащихся в этой папке. Конечно, выполнение интерфейса itestsourcefile.GetFolders() - Возвращает список папок, содержащихся в этой папке. Конечно, выполнение интерфейса Itestsourcedir. (Если нет файлов или папок, коллекция пуста) Они просто работают, нечего специально настроить там.
Этот проект принял Кодекс поведения, определяемый Заветом участника, чтобы прояснить ожидаемое поведение в нашем сообществе. Для получения дополнительной информации см. Швейцарский кодекс поведения OSS.