ByteDev.Testing
5.1.0
dotnet add package ByteDev.Testing --version 5.1.0
NuGet\Install-Package ByteDev.Testing -Version 5.1.0
<PackageReference Include="ByteDev.Testing" Version="5.1.0" />
paket add ByteDev.Testing --version 5.1.0
#r "nuget: ByteDev.Testing, 5.1.0"
// Install ByteDev.Testing as a Cake Addin #addin nuget:?package=ByteDev.Testing&version=5.1.0 // Install ByteDev.Testing as a Cake Tool #tool nuget:?package=ByteDev.Testing&version=5.1.0
ByteDev.Testing
.NET Standard library that provides some testing related functionality.
Installation
ByteDev.Testing has been written as a .NET Standard 2.1 library.
ByteDev.Testing is hosted as a package on nuget.org. To install from the Package Manager Console in Visual Studio run:
Install-Package ByteDev.Testing
Further details can be found on the nuget page.
Release Notes
Releases follow semantic versioning.
Full details of the release notes can be viewed on GitHub.
Usage
The library is split into the following main parts:
- Builders
- HTTP
- Setting
- Settings
Builders - DirectoryBuilder
DirectoryBuilder
helps to create directories quickly for testing purposes.
using ByteDev.Testing.Builders;
// ...
// Create a directory quickly on disk
DirectoryInfo dir = DirectoryBuilder.InFileSystem
.WithPath(@"C:\Temp\Testing")
.EmptyIfExists()
.Build();
Builders - FileBuilder
FileBuilder
helps to create files quickly for testing purposes.
using ByteDev.Testing.Builders;
// ...
// Create a file quickly on disk
FileInfo file = FileBuilder.InFileSystem
.WithPath(@"C:\Temp\Testing\TestFile1.txt")
.WithSize(10)
.OverwriteIfExists(true)
.Build();
HTTP - FakeHttpMessageHandler
FakeHttpMessageHandler
allows you to provide a sequence of outcomes (HTTP responses or exceptions thrown) that correspond to each HTTP request made.
using ByteDev.Testing.Http;
// ...
var uri = new Uri("http://www.google.com/");
// Create a sequence of outcomes...
// 1st request will return a response OK with content.
// 2nd request will throw request timeout exception.
var outcomes = new List<FakeRequestOutcome>
{
new FakeRequestOutcome(new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new StringContent("Testing")
}),
new FakeRequestOutcome(FakeRequestOutcome.CreateRequestTimeout())
}
// Create a fake HTTP handler
var handler = new FakeHttpMessageHandler(outcomes);
var httpClient = new HttpClient(handler);
var response1 = await httpClient.GetAsync(uri);
var content = await response1.Content.ReadAsStringAsync();
// response1.StatusCode == HttpStatusCode.OK
// content == "Testing"
// Throws TaskCanceledException("Request has timed out.")
var response2 = await httpClient.GetAsync(uri);
// handler.RequestsMade == 2
Setting - TestSetting
The TestSetting
type represents a single string value setting that lives external to a test project.
using ByteDev.Testing.Setting;
using ByteDev.Testing.Setting.Providers;
// ...
var testSetting = new TestSetting();
testSetting.AddProvider(new FileSettingProvider(new[]
{
"C:\Dev\SomeSetting.apikey",
"C:\Temp\AnotherSetting.txt"
}));
testSetting.AddProvider(new EnvironmentSettingProvider("MyProjEnvVar"));
string setting = testSetting.GetSetting();
// The two files will be checked first for the setting and if
// not found the environment variable will be checked.
Settings - TestSettings
The TestSettings
type represents sets of test settings that lives external to a test project.
// Define the settings class
public class MyAppSettings
{
public string MySecret1 { get; set; }
public string MySecret2 { get; set; }
}
Example JSON settings file MyApp.settings.json
(property name case is ignored):
{
"MySecret1": "some secret 1",
"MySecret2": "some secret 2"
}
using ByteDev.Azure.KeyVault.Secrets;
using ByteDev.Testing.Settings;
using ByteDev.Testing.Settings.Providers;
// ...
var kvClient = new KeyVaultSecretClient(keyVaultUri);
var testSettings = new TestSettings();
testSettings
.AddProvider(new JsonFileSettingsProvider(
@"X:\Secure\MyApp.settings.json",
@"C:\Temp\MyOtherApp.settings.json))
.AddProvider(new KeyVaultSettingsProvider(kvClient));
// The TestSettings type will try to get the settings from the two
// JSON files first and if it fails will try Azure Key Vault
MyAppSettings settings = testSettings.GetSettings<MyAppSettings>();
As well as defining and providing your own settings class you can also use the built in TestAzureSettings
and TestAzureKeyVaultSettings
settings classes.
For example:
using ByteDev.Testing.Settings.Entities;
// ...
TestAzureSettings settings = testSettings.GetAzureSettings();
// TestAzureSettings contains common Azure settings, including:
// SubscriptionId, TenantId, ClientId, ClientSecret etc.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.1 is compatible. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.1
- ByteDev.Azure.KeyVault (>= 2.3.0)
- ByteDev.Io (>= 7.4.0)
- System.Text.Json (>= 5.0.2)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.