Skip to content

Streamline your automated .NET tests: load the right input with 1 line of code.

License

Notifications You must be signed in to change notification settings

BlueDotBrigade/daten-lokator

Repository files navigation

Daten Lokator

.NET CodeQL

Overview

BlueDotBrigade.DatenLokator is a .NET NuGet package that streamlines automated testing by allowing you to load input data with a single line of code, thus reducing visual noise and improving test comprehension. This library supports multiple data formats, automatic decompression, global caching, and run-time customization.

Features

  1. Retrieve data in different formats:
    • AsBytes()
    • AsFile()
    • AsString()
    • AsStream()
    • AsStreamReader()
    • AsJson()
  2. Automatic decompression of *.zip files.
    • Useful for saving disk space.
  3. Global cache support.
    • Useful when multiple tests consume the same file as input.
  4. Run-time customization.
    • Can be used to specify where the input data will be stored.
  5. Extensible library.

Getting Started

Setup:

  1. Create a .NET automated test project.
    • For example: Using Visual Studio add a MsTest Test Project to your solution.
    • Daten Lokator will work with: MsTest, NUnit, XUnit, etc.
  2. Add the latest NuGet package to your test project:
  3. The Daten Lokator library must be initialized only once when the automated tests start.
    • Example: Lokator.Get().Setup()
    • If you are using MsTest then consider doing this where the AssemblyInitialize attribute is used.
  4. Create a.Daten folder within the project (*.csproj) directory.
    • Example: /DemoTests/.Daten
    • Storing the input data within the project directory provides traceability, because now the input data can be committed to source control (e.g. GitHub).

Managing source files:

  1. Create an automated test.
    • By default it is assumed that test method name follows the Assert Act Arrange naming convention.
  2. Save the input data in a file directory structure that mirrors the namespace.
    • For example:
      • Unit Tests: /DemoTests/Serialization/XmlSerializerTests.cs
      • Input Data: /DemoTests/.Daten/Serialization/XmlSerializerTests/*.*
    • Where:
      • .Daten is Daten Lokator's root directory for all input files.
      • Serialization is the namespace where the XmlSerializerTests.cs automated tests can be found.
  3. When an input file is needed, simply call the appropriate Daten method from your automated test.
    • For example: new Daten().AsString()

Sample Code

The following unit tests, written for a trivial application, demonstrate how:

  1. easy it is to use Daten Lokator, and
  2. how the library reduces visual noise thus making the test easier to read