The ability to write useful tests is a hard won-won skill. It is not something that emerges easily when writing tests just because you were told to. You need to have a use for them in mind and do work that proves if they actually are useful.
It doesn't help that there are different philosophies about how it should be done. Some want every class isolated and all its dependencies mocked. Others want only high level-level tests that show some behavior exists in support of some requirement.
TDD (Test-Driven Development) is an art. You really need to practice at home. TDD done halfway makes a nightmarish mess. You'll know when you have a handle on TDD when you do it, not because you're supposed to, but because it makes you faster. If it's slowing you down you're still not ready to do it at work.
Testing for planned refactoring is another story. Michael Feathers' book Working Effectively with Legacy CodeWorking Effectively with Legacy Code is a must read-read if you want to transform a code base with no tests into something else that has some tests that prove that you only changed what you meant to change.
Good tests show expected behavior. Good tests show intent. Good tests show what wasn't thought of. Good tests show how to express what wasn't thought of. Good tests are a handy way to peer review code. "Shouldn't your code do this? Because it doesn't"doesn't."