Third Party Libraries - JerrettDavis/FolderProcessor Wiki

Philosophy

We're huge proponents for not reinventing the wheel. As such, the project's stance on third-party libraries is pretty lax. If better solutions already exist for a piece of functionality we wish to implement, by all means, use a battle-test third party library. By that same token, if a piece of functionality is trivially implemented, there is no reason to introduce a library to do it.


Libraries Used

AutoFixture.AutoMoq

This library is a part of AutoFixture, and it leverages Moq to create mocks of classes for unit tests.

Used In: FolderProcessor.UnitTests

AutoFixture.XUnit2

This library is a part of AutoFixture, and it is used to aid in dynamically creating mock data and dependencies for unit tests.

Used In: FolderProcessor.UnitTests

coverlet.collector

Coverlet is a library used for generating coverage reports for unit tests. coverlet.collector includes VSTest integrations for the coverlet library. This is used to generate coverage report runs.

Used In: FolderProcessor.UnitTests

FluentAssertions

FluentAssertions contains tons of extension methods that makes writing unit tests more natural and readable.

Used In: FolderProcessor.UnitTests

JetBrains.Annotations

The library contains several attributes that make class intentions more explicit, without changing any of the functionality of the application. They are primarily used for IDE hints.

Used In: All Projects

MediatR

MediatR is a simple, flexible mediator implementation that underpins the vast majority of the application functionality. Mediator helps decouple definitions from their handlers, and makes writing testable, scalable, and extensible code much easier.

Used In: FolderProcessor, FolderProcessor.Host

MediatR.Contracts

Provides the contracts that underpin MediatR. These are used to build the application's internal handlers.

Used In: FolderProcessor.Abstractions, FolderProcessor.Models

MediatR.Extensions.Microsoft.DependencyInjection

Used to configure the FolderProcessor host. The library wires up all of Mediatr's internal dependencies, and adds all our handlers to its internal handler.

Used In: FolderProcessor.Extensions.Microsoft.DependencyInjection

Microsoft.Extensions.Configuration.Abstractions

Used to pass configuration settings into the application startup extensions.

Used In: FolderProcessor.Extensions.Microsoft.DependencyInjection

Microsoft.Extensions.Configuration.Binder

Used to translate IConfiguration to internal application models.

Used In: FolderProcessor.Extensions.Microsoft.DependencyInjection

Microsoft.Extensions.DependencyInjection.Abstractions

Used to provide dependency injection abstractions to the application startup extensions.

Used In: FolderProcessor.Extensions.Microsoft.DependencyInjection

Microsoft.Extensions.Hosting

Used to setup the example worker used in the demo application.

Used In: FolderProcessor.Host

Microsoft.Extensions.Logging.Abstractions

Used to provide logging interfaces throughout the application.

Used In: FolderProcessor

Microsoft.NET.Test.Sdk

Used to run the tests for the application.

Used In: FolderProcessor.UnitTests

Moq

Moq is a mocking framework for .Net that simplifies creating functional mocked objects for unit tests.

Used In: FolderProcessor.UnitTests

Polly

Polly is a resilience library, used for adding retry, circuit breaker, timeout, and other behaviors to a process. It's used to retry processes in the application that may have failed due to external factors.

Used In: FolderProcessor

System.Interactive.Async

This library is a part of the dotnet\reactive extensions. It enables us to work with asynchronous streams in a reactive, event-based way.

Used In: FolderProcessor

System.IO.Abstractions

Provides an abstraction layer over System.IO. This is heavily used to abstract away filesystem operations for unit testing.

Used In: FolderProcessor

System.IO.Abstractions.TestingHelpers

Contains test objects to help facilitate filesystem testing.

Used In: FolderProcessor.UnitTests

xunit

The unit test framework used in the library.

Used In: FolderProcessor.UnitTests

xunit.runner.visualstudio

Provides Visual Studio integration for XUnit.

Used In: FolderProcessor.UnitTests