Substantive.TestTools 9.17.12-build20260120r1

Do not use with Experiment project

Terminology

  • Stub objects are passed around but never actually used. Usually they are just used to fill parameter lists.
  • Fake objects actually have working implementations, but usually take some shortcut which makes them not suitable for production (an InMemoryTestDatabase is a good example).
  • Stubs provide canned answers to calls made during the test, usually not responding at all to anything outside what's programmed in for the test.
  • Spies are stubs that also record some information based on how they were called. One form of this might be an email service that records how many messages it was sent.
  • Mocks are pre-programmed with expectations which form a specification of the calls they are expected to receive. They can throw an exception if they receive a call they don't expect and are checked during verification to ensure they got all the calls they were expecting.

Customize Log Template in UnitTestFixture

Not possible from coding. Maybe from testappsetting.json or xunit.runner.json.

UnitTest Flow

  1. UnitTestFixture's Constructor : Create Service > Create InjectableTestOutputSink > Add Serilog into Service
  2. UnitTestFixture's InitializeAsync : Build ServiceCollection
  3. BaseUnitTest's Constructor : Injected testOutputHelper into InjectableTestOutputSink > Create Service Scope
  4. UnitTest's Constructor : Do nothing
  5. BaseUnitTest's InitializeAsync : Create Logger for UnitTest class

Confiuguration Options

Option1 - Change running order > Not possible Option2 - Update fixture parameter in UnitTest's Constructor (Step4) > Too late Option3 - Pass argument in UnitTest's Constructor (Step0) > Cannot reach UnitTestFixture Option4 - Create function to customize fixture > Not work, because service already created and injected Option5 - Restructure fixture to setup Logger later > Not work

Message that got block by Azure WAF

<p style="-webkit-text-stroke-width:0px;background-color:rgb(255, 255, 255);box-sizing:border-box;color:rgb(30, 30, 30);font-family:Roboto, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size:15px;font-style:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-weight:400;letter-spacing:normal;margin:0px;orphans:2;padding:0px 0px 15px;text-align:start;text-decoration-color:initial;text-decoration-style:initial;text-decoration-thickness:initial;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;">Everyone working for the UN is responsible for helping to create and protect the work culture of civility and respect, in which we proactively and effectively address workplace issues including instances of possible discrimination, harassment (including sexual harassment), and abuse of authority.</p><p style="-webkit-text-stroke-width:0px;background-color:rgb(255, 255, 255);box-sizing:border-box;color:rgb(30, 30, 30);font-family:Roboto, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size:15px;font-style:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-weight:400;letter-spacing:normal;margin:0px;orphans:2;padding:0px 0px 15px;text-align:start;text-decoration-color:initial;text-decoration-style:initial;text-decoration-thickness:initial;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;">There are many ways to encourage trust, psychological safety, and a sense of belonging for all UN personnel so that every one of us can be empowered to comply with <a style="background-color:transparent;box-sizing:border-box;color:rgb(42, 104, 175);text-decoration:none;transition:0.2s ease-in-out;" href="https://undocs.org/ST/SGB/2019/8" target="_blank">ST/SGB/2019/8</a> on Addressing discrimination, harassment, including sexual harassment, and abuse of authority.</p><p style="-webkit-text-stroke-width:0px;background-color:rgb(255, 255, 255);box-sizing:border-box;color:rgb(30, 30, 30);font-family:Roboto, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size:15px;font-style:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-weight:400;letter-spacing:normal;margin:0px;orphans:2;padding:0px 0px 15px;text-align:start;text-decoration-color:initial;text-decoration-style:initial;text-decoration-thickness:initial;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;">As part of the <a style="background-color:transparent;box-sizing:border-box;color:rgb(42, 104, 175);text-decoration:none;transition:0.2s ease-in-out;" href="https://hr.un.org/united-to-respect" target="_blank">United to Respect Initiative</a>, the Office of Human Resources in the Department of Management Strategy, Policy and Compliance is pleased to introduce a new mandatory self-paced online learning programme, “United to Respect: Preventing Sexual Harassment and Other Prohibited Conduct”.&nbsp;</p><p style="-webkit-text-stroke-width:0px;background-color:rgb(255, 255, 255);box-sizing:border-box;color:rgb(30, 30, 30);font-family:Roboto, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size:15px;font-style:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-weight:400;letter-spacing:normal;margin:0px;orphans:2;padding:0px 0px 15px;text-align:start;text-decoration-color:initial;text-decoration-style:initial;text-decoration-thickness:initial;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;">This new programme builds upon and replaces the programme, “Prevention of Sexual Harassment and Abuse by United Nations Personnel — Working Harmoniously”, in the mandatory learning portfolio. The “Working Harmoniously” programme will thereby no longer be mandatory effective today.</p><p style="-webkit-text-stroke-width:0px;background-color:rgb(255, 255, 255);box-sizing:border-box;color:rgb(30, 30, 30);font-family:Roboto, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size:15px;font-style:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-weight:400;letter-spacing:normal;margin:0px;orphans:2;padding:0px 0px 15px;text-align:start;text-decoration-color:initial;text-decoration-style:initial;text-decoration-thickness:initial;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;">The new mandatory programme is available in two versions – a foundational version for all personnel and a version for managers that includes an additional module.</p><p style="-webkit-text-stroke-width:0px;background-color:rgb(255, 255, 255);box-sizing:border-box;color:rgb(30, 30, 30);font-family:Roboto, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size:15px;font-style:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-weight:400;letter-spacing:normal;margin:0px;orphans:2;padding:0px 0px 15px;text-align:start;text-decoration-color:initial;text-decoration-style:initial;text-decoration-thickness:initial;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;">Both versions are offered in all six official UN languages.</p><p style="-webkit-text-stroke-width:0px;background-color:rgb(255, 255, 255);box-sizing:border-box;color:rgb(30, 30, 30);font-family:Roboto, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size:15px;font-style:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-weight:400;letter-spacing:normal;margin:0px;orphans:2;padding:0px 0px 15px;text-align:start;text-decoration-color:initial;text-decoration-style:initial;text-decoration-thickness:initial;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;">All staff members, including those who have completed the “Working Harmoniously” programme, will be required to complete the new “United to Respect” mandatory learning programme.</p>

Showing the top 20 packages that depend on Substantive.TestTools.

Packages Downloads
Substantive.Foundation.Backends
A metapackage contains all Substantive backend building blocks.
3
Substantive.Foundation.Backends
A metapackage contains all Substantive backend building blocks.
4
Substantive.Foundation.Backends
A metapackage contains all Substantive backend building blocks.
6
Substantive.Foundation.Backends
A metapackage contains all Substantive backend building blocks.
7
Substantive.Foundation.Backends
A metapackage contains all Substantive backend building blocks.
8
Substantive.Foundation.Backends
A metapackage contains all Substantive backend building blocks.
9
Substantive.Foundation.Backends
A metapackage contains all Substantive backend building blocks.
11
Substantive.Foundation.Backends
A metapackage contains all Substantive backend building blocks.
14
Substantive.Foundation.Backends
A metapackage contains all Substantive backend building blocks.
16

Version Downloads Last updated
9.17.21-build20260204R1 3 02/04/2026
9.17.20-build20260203R1 3 02/03/2026
9.17.19-build20260130R1 3 01/30/2026
9.17.18-build20260129R1 1 01/29/2026
9.17.17-build20260129R1 5 01/29/2026
9.17.17-build20260128R1 3 01/28/2026
9.17.16-build20260127R2 4 01/27/2026
9.17.16-build20260123R1 2 01/23/2026
9.17.15-build20260122R1 5 01/22/2026
9.17.14-build20260122R2 10 01/22/2026
9.17.14-build20260122R1 1 01/22/2026
9.17.14-build20260121R1 2 01/21/2026
9.17.13-build20260121R1 5 01/21/2026
9.17.12-build20260120R1 5 01/20/2026
9.17.11-build20260120R1 3 01/20/2026
9.17.10-build20260120R1 2 01/20/2026
9.17.9-build20260119R1 3 01/19/2026
9.17.8-build20260119R1 2 01/19/2026
9.17.7-build20260115R1 1 01/15/2026
9.17.6-build20260115R1 2 01/15/2026
9.17.5-build20260115R1 1 01/15/2026
9.17.4-build20260115R1 5 01/15/2026
9.17.3-build20260115R1 1 01/15/2026
9.17.2-build20260115R1 1 01/15/2026
9.17.2-build20260113R1 6 01/13/2026
9.17.1-build20251231R2 2 12/31/2025
9.17.1-build20251230R2 16 12/30/2025
9.17.1-build20251230R1 1 12/30/2025
9.17.0-build20251226R1 3 12/26/2025
9.17.0-build20251225R1 4 12/25/2025
9.16.0-build20251224R1 6 12/24/2025
9.15.3-build20251224R1 2 12/24/2025
9.15.2-build20251224R1 1 12/24/2025
9.12.0-build20251223R1 4 12/23/2025
9.1.0-build20251218R1 6 12/18/2025
9.0.5-build20251117R1 1 11/17/2025
9.0.5-build20251110R1 1 11/10/2025
9.0.5-build20251016R1 1 10/16/2025
9.0.5-build20250924R1 1 09/24/2025
9.0.5-build20250827R1 1 08/27/2025
9.0.0 26 08/16/2025
9.0.0-build20250814R1 2 08/14/2025
9.0.0-build20250714R3 7 07/14/2025
9.0.0-build20250714R2 3 07/14/2025
9.0.0-build20250714R1 2 07/14/2025
9.0.0-build20250710R1 5 07/10/2025
9.0.0-build20250707R2 14 07/07/2025
9.0.0-build20250707R1 3 07/07/2025
9.0.0-build20250629R1 8 06/29/2025
9.0.0-build20250626R2 9 06/26/2025
9.0.0-build20250626R1 4 06/26/2025
9.0.0-build20250623R1 9 06/23/2025
9.0.0-build20250621R1 12 06/21/2025