- Home /
Combine StringAssert with Unity Debug.Log
I'm working on my Unit tests and using the Unity Testing Framework. In several functions I try and catch a few lines and when the catch phrase is called I through a Debug.Log-message, witch is a combination of a static string and e.g. a System.Exception.
How to test the combined log messages?
I tried the following:
public static void LoadStartParameterTest_ReturnLogs(string input, LogType logType, string log)
{
IniLoader.LoadStartParameter(input);
LogAssert.Expect(logType, log);
}
But the test failed, because I just know the content of the static string and the parameter "log" is a combined one as discussed.
So I tried:
public static void LoadStartParameterTest_ReturnException(string input, string log)
{
var ex = Assert.Catch<System.Exception>(()=>IniLoader.LoadStartParameter(input));
StringAssert.Contains(log, ex.Message);
}
But the test failed again, because it is a Debug.Log and not a System.Exception.
So I would like to combine the Assert.Catch with the UnityEngine.LogType or get something like LogAssert.Contains. Has anyone any experience in that field?
With Assert.Throws<LogType.Log>(...);
I get the same Error as with Assert.Catch<LogType.Log>(...);
The type name 'Log' does not exist in the type 'LogType'. Does anyone know why?
Answer by ActiveSim · Apr 13, 2021 at 12:14 PM
It is working with LogAssert.Expect(LogType.Exception, new Regex("Assertion failure.*"));
Your answer
Follow this Question
Related Questions
Is there a way to ensure Awake is called in Unit tests? 2 Answers
How can I run Unity tests with some defined nUnit category 2 Answers
Unity 5.6 Unit Testing 1 Answer
How to Run Editor Test Runner test from editor script in 5.6? 4 Answers
How to import plugins inside tests in Unity Test Runner 1 Answer