14. Preserve test state
Learning objectives
This section will cover how to let variables and information in your tests survive domain reloads using serialization.
Intro and motivation
When a domain reload happens, all scripts are reloaded. That also means that most data in members of the test class are lost. In some cases that is an issue, as you might want to retain some information during a domain reload.
The solution to that is serialization. If you add a [SerializeField]
attribute to the field in question, then it will retain its value. Note that there are some limitations to serialization in Unity, see Unity Serialization.
Exercise
The sample 14_PreserveTestState
contains the solution for the previous assignment, with one exception; the file name is now a guid.
This means that in order to clean up correctly, the TearDown
method needs to know the filename.
Currently, when running the test for the first time, the TearDown
will fail because it's not given a file name. On subsequent runs of the test, it will fail due to duplicate files with the same C# script in it.
The task is to fix this loss of the file name info by using serialization.
Solution
The solution is simple. Just add a [SerializeField]
attribute to the filename field. The solution is included as sample 14_PreserveTestState_Solution.
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.