Third Party Libraries - JerrettDavis/FolderProcessor GitHub 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