Skip to content

Streamline your automated .NET tests: load the right input data 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

If your automated tests are verifying more than just value types (string, int, float, etc), then consider using the BlueDotBrigade.DatenLokator NuGet package to automatically locate and load your test data (*.log, *.xml, *.json, *.jpg, etc). All you need to do is call one method:

  • new Daten().AsString()

Features

  1. Retrieve data in different formats:
    • AsBytes()
    • AsFile()
    • AsString()
    • AsStream()
    • AsStreamReader()
  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