- Home /
Logging when using Unity Test Tools
I have use JSUnit which is a test runner for JavaScript and it has three logger functions, info(), warn() and debug(). These function enable you to output any string or value into a separate browser window which is really handy.
I was wondering how and where can I log some output from within my unit tests in Unity?
I use Unity 5.1.4 with Unity Test Tools and there are some way to log but which is the right one?
Debug.Log() runs only when you run the game either in play mode or when build and Console.Writeln() doesn't work or the output is sent somewhere else.
I use SharpDevelop 5 but I don't see any output printed from withing my test functions.
Here is a sample test class:
using System;
using System.IO;
using NUnit.Framework;
using NSubstitute;
using UnityEngine;
namespace Assets.UnityTestTools.UnitTesting.Editor.GameUnitTests
{
[TestFixture]
public class SaveLoadGameDataTests
{
[Test]
public void ResetGameStateTest_SetGameStateToNewValuesInWebEnvAndRunTheFunction_PassesIfGameStateHasDefaults()
{
// arrange
SaveLoadGameData saveLoadObject;
GameObject gameStateObject = new GameObject();
saveLoadObject = gameStateObject.AddComponent<SaveLoadGameData>();
saveLoadObject.experience = 1000;
saveLoadObject.score = 10000;
saveLoadObject.winPercent = 75;
saveLoadObject.tasksSolved = 40;
saveLoadObject.correct = 30;
saveLoadObject.gameStateDirty = true;
saveLoadObject.gameIsNormal = false;
// act
saveLoadObject.ResetGameState();
// assert
Assert.AreEqual(saveLoadObject.experience, Helper.DEFAULT_EXPERIENCE, "hello");
Console.WriteLine(saveLoadObject.experience + "," + Helper.DEFAULT_EXPERIENCE );
GameObject.Destroy(gameStateObject);
}
}
}
Answer by spinnerbox · Feb 25, 2016 at 01:51 PM
Just found that Unit Tests Runner window has two panels, one for the tree of available tests and one for output. In the output panel is printed whether the test has a bug or it doesn't compile. Make sure the test is compiling and then use Debug.Log() to print output in the Unity Console panel.