c # – Best Practices for TDD in a Classroom Listening to Events

I am a TDD user and I am going to force myself to use it for a future project. However, I predict that my project requires an event system.

I've read that you should only test public methods, but the crux of the events is that there are fewer public methods.

I suspect that I should check that a class correctly receives an event when it is triggered. But how? And what else should be tested? What are the other things to consider?

Are there best practices for TDD with classes listening to events?
What about raising events?

Although this question applies to any OO language, I code in C #.