<PackageReference Include="NUnit" Version="3.6.1" />

Warn

public class Warn
Provides static methods to express conditions that must be met for the test to succeed. If any test fails, a warning is issued.
using NUnit.Framework.Constraints; using NUnit.Framework.Internal; using System; using System.ComponentModel; namespace NUnit.Framework { public class Warn { [EditorBrowsable(EditorBrowsableState.Never)] public new static bool Equals(object a, object b) { throw new InvalidOperationException("Warn.Equals should not be used for Assertions."); } [EditorBrowsable(EditorBrowsableState.Never)] public new static void ReferenceEquals(object a, object b) { throw new InvalidOperationException("Warn.ReferenceEquals should not be used for Assertions."); } public static void Unless<TActual>(ActualValueDelegate<TActual> del, IResolveConstraint expr) { Unless(del, expr.Resolve(), null, null); } public static void Unless<TActual>(ActualValueDelegate<TActual> del, IResolveConstraint expr, string message, params object[] args) { CheckMultipleAssertLevel(); IConstraint constraint = expr.Resolve(); IncrementAssertCount(); ConstraintResult constraintResult = constraint.ApplyTo(del); if (!constraintResult.IsSuccess) IssueWarning(constraintResult, message, args); } private static void IssueWarning(ConstraintResult result, string message, object[] args) { MessageWriter messageWriter = new TextMessageWriter(message, args); result.WriteMessageTo(messageWriter); Assert.Warn(messageWriter.ToString()); } public static void Unless<TActual>(ActualValueDelegate<TActual> del, IResolveConstraint expr, Func<string> getExceptionMessage) { CheckMultipleAssertLevel(); IConstraint constraint = expr.Resolve(); IncrementAssertCount(); ConstraintResult constraintResult = constraint.ApplyTo(del); if (!constraintResult.IsSuccess) IssueWarning(constraintResult, getExceptionMessage(), null); } public static void Unless(bool condition, string message, params object[] args) { Unless(condition, Is.True, message, args); } public static void Unless(bool condition) { Unless(condition, Is.True, null, null); } public static void Unless(bool condition, Func<string> getExceptionMessage) { Unless(condition, Is.True, getExceptionMessage); } public static void Unless(Func<bool> condition, string message, params object[] args) { Unless(condition(), Is.True, message, args); } public static void Unless(Func<bool> condition) { Unless(condition(), Is.True, null, null); } public static void Unless(Func<bool> condition, Func<string> getExceptionMessage) { Unless(condition(), Is.True, getExceptionMessage); } public static void Unless(TestDelegate code, IResolveConstraint constraint) { Unless((object)code, constraint); } public static void Unless<TActual>(TActual actual, IResolveConstraint expression) { Unless(actual, expression, null, null); } public static void Unless<TActual>(TActual actual, IResolveConstraint expression, string message, params object[] args) { CheckMultipleAssertLevel(); IConstraint constraint = expression.Resolve(); IncrementAssertCount(); ConstraintResult constraintResult = constraint.ApplyTo(actual); if (!constraintResult.IsSuccess) IssueWarning(constraintResult, message, args); } public static void Unless<TActual>(TActual actual, IResolveConstraint expression, Func<string> getExceptionMessage) { CheckMultipleAssertLevel(); IConstraint constraint = expression.Resolve(); IncrementAssertCount(); ConstraintResult constraintResult = constraint.ApplyTo(actual); if (!constraintResult.IsSuccess) IssueWarning(constraintResult, getExceptionMessage(), null); } public static void If<TActual>(ActualValueDelegate<TActual> del, IResolveConstraint expr) { If(del, expr.Resolve(), null, null); } public static void If<TActual>(ActualValueDelegate<TActual> del, IResolveConstraint expr, string message, params object[] args) { CheckMultipleAssertLevel(); NotConstraint notConstraint = new NotConstraint(expr.Resolve()); IncrementAssertCount(); ConstraintResult constraintResult = notConstraint.ApplyTo(del); if (!constraintResult.IsSuccess) IssueWarning(constraintResult, message, args); } public static void If<TActual>(ActualValueDelegate<TActual> del, IResolveConstraint expr, Func<string> getExceptionMessage) { CheckMultipleAssertLevel(); NotConstraint notConstraint = new NotConstraint(expr.Resolve()); IncrementAssertCount(); ConstraintResult constraintResult = notConstraint.ApplyTo(del); if (!constraintResult.IsSuccess) IssueWarning(constraintResult, getExceptionMessage(), null); } public static void If(bool condition, string message, params object[] args) { If(condition, Is.True, message, args); } public static void If(bool condition) { If(condition, Is.True, null, null); } public static void If(bool condition, Func<string> getExceptionMessage) { If(condition, Is.True, getExceptionMessage); } public static void If(Func<bool> condition, string message, params object[] args) { If(condition(), Is.True, message, args); } public static void If(Func<bool> condition) { If(condition(), Is.True, null, null); } public static void If(Func<bool> condition, Func<string> getExceptionMessage) { If(condition(), Is.True, getExceptionMessage); } public static void If<TActual>(TActual actual, IResolveConstraint expression) { If(actual, expression, null, null); } public static void If<TActual>(TActual actual, IResolveConstraint expression, string message, params object[] args) { CheckMultipleAssertLevel(); NotConstraint notConstraint = new NotConstraint(expression.Resolve()); IncrementAssertCount(); ConstraintResult constraintResult = notConstraint.ApplyTo(actual); if (!constraintResult.IsSuccess) IssueWarning(constraintResult, message, args); } public static void If<TActual>(TActual actual, IResolveConstraint expression, Func<string> getExceptionMessage) { CheckMultipleAssertLevel(); NotConstraint notConstraint = new NotConstraint(expression.Resolve()); IncrementAssertCount(); ConstraintResult constraintResult = notConstraint.ApplyTo(actual); if (!constraintResult.IsSuccess) IssueWarning(constraintResult, getExceptionMessage(), null); } private static void CheckMultipleAssertLevel() { if (TestExecutionContext.CurrentContext.MultipleAssertLevel > 0) throw new Exception("Warn.If may not be used in a multiple assertion block."); } private static void IncrementAssertCount() { TestExecutionContext.CurrentContext.IncrementAssertCount(); } } }