MsgPack.TestSummaryReporter.HandleFatalException C# (CSharp) Méthode

HandleFatalException() public méthode

Handles the fatal exception.
public HandleFatalException ( string stage, Exception exception, Result resultPrefab, GameObject resultVertical ) : void
stage string The stage of test execution for reporting.
exception System.Exception The fatal exception.
resultPrefab Result The prefab for test result indicators.
resultVertical UnityEngine.GameObject The vertical area which test result indicators to be belonging.
Résultat void
		public void HandleFatalException( string stage, Exception exception, Result resultPrefab, GameObject resultVertical )
		{
			var message = this._currentTestClassName + "." + stage + " FATAL " + Environment.NewLine + exception;
			UnityEngine.Debug.LogError( message );
			var result = this._isAllRunMode ? this._globalResult : CreateNewResult( resultPrefab, resultVertical );
			result.Message.Value = message;
			result.Color.Value = UnityEngine.Color.red;
		}

Usage Example

		/// <summary>
		///		Runs specified test class as coroutine.
		/// </summary>
		/// <param name="testClass">The test class.</param>
		/// <param name="summaryReporter">The reporter object to report test class execution summary.</param>
		/// <param name="resultPrefab">The prefab for test result indicators.</param>
		/// <param name="resultVertical">The vertical area which test result indicators to be belonging.</param>
		/// <returns><see cref="IEnumerator"/> for coroutine.</returns>
		private static IEnumerator RuntTestCoroutineCore( TestClass testClass, TestSummaryReporter summaryReporter, Result resultPrefab, GameObject resultVertical )
		{ 
			bool isCrashed = false;

			try
			{
				InitializeTestEngine();
			}
			catch ( Exception ex )
			{
				summaryReporter.HandleFatalException( "InitializeTestEngine", ex, resultPrefab, resultVertical );
				summaryReporter.RecordError( testClass.MethodCount );
				isCrashed = true;
			}

			if ( isCrashed )
			{
				yield break;
			}

			yield return null;

			try
			{
				testClass.FixtureSetup();
			}
			catch ( Exception ex )
			{
				summaryReporter.HandleFatalException( "FixtureSetup", ex, resultPrefab, resultVertical );
				summaryReporter.RecordError( testClass.MethodCount );
				isCrashed = true;
			}

			if ( isCrashed )
			{
				yield break;
			}

			yield return null;

			TestClassInstance instance = null;
			try
			{
				instance = testClass.NewTest();
			}
			catch ( Exception ex )
			{
				summaryReporter.HandleFatalException( "Instantiation", ex, resultPrefab, resultVertical );
				summaryReporter.RecordError( testClass.MethodCount );
				isCrashed = true;
			}

			if ( isCrashed )
			{
				yield break;
			}

			yield return null;

			int remains = testClass.MethodCount;
			foreach ( var method in instance.TestMethods )
			{
				try
				{
					instance.TestSetup();
				}
				catch ( Exception ex )
				{
					summaryReporter.HandleFatalException( "TestSetup", ex, resultPrefab, resultVertical );
					summaryReporter.RecordError( remains );
					isCrashed = true;
				}

				if ( isCrashed )
				{
					yield break;
				}

				yield return null;

				var fullMethodName = testClass.Name + "." + method.Name;
				
				try
				{
					method.Method();
					summaryReporter.RecordSuccess();
					// Omit test result to reduce memory usage and avoid cluttered screen.
				}
				catch ( Exception ex )
				{
					if ( IsTestSkipping( ex ) )
					{
						summaryReporter.RecordSkip();
					}
					else
					{
						bool isFailure = IsTestFailure( ex );
						var messageHeader = summaryReporter.FormatMethodName( method.Name ) + ( isFailure ? " NG" : " Error" ) + Environment.NewLine;
						UnityEngine.Debug.LogError( messageHeader + ex );
						var r = CreateResult( fullMethodName, resultPrefab, resultVertical );
						var baseException = ex.GetBaseException();
						if ( isFailure || baseException == ex )
						{
							r.Message.Value = messageHeader + ex.Message;
						}
						else
						{
							// Record BaseException to help investigation.
							r.Message.Value = messageHeader + ex.Message + "-->" + Environment.NewLine + baseException.Message;
						}

						r.Color.Value = UnityEngine.Color.red;

						if ( isFailure )
						{
							summaryReporter.RecordFailure();
						}
						else
						{
							summaryReporter.RecordError();
						}
					}
				}

				remains--;

				yield return null;

				try
				{
					instance.TestCleanup();
				}
				catch ( Exception ex )
				{
					summaryReporter.HandleFatalException( "TestCleanup", ex, resultPrefab, resultVertical );
					summaryReporter.RecordError( remains );
					isCrashed = true;
				}

				if ( isCrashed )
				{
					yield break;
				}

				yield return null;
			} // foreach method

			try
			{
				testClass.FixtureCleanup();
			}
			catch ( Exception ex )
			{
				summaryReporter.HandleFatalException( "FixtureCleanup", ex, resultPrefab, resultVertical );
				isCrashed = true;
			}

			if ( isCrashed )
			{
				yield break;
			}

			yield return null;

			try
			{
				CleanUpTestEngine();
			}
			catch ( Exception ex )
			{
				summaryReporter.HandleFatalException( "CleanupTestEngine", ex, resultPrefab, resultVertical );
			}

			yield return null;
		}
All Usage Examples Of MsgPack.TestSummaryReporter::HandleFatalException