Zirkuläre Unitnutzung ist in einem Falle wie deinem durchaus angebracht.
Möglich ist das sicher, aber angebracht oder sinnvoll nicht. Denn dadurch verzahnt man Code miteinander viel zu sehr. Dadurch ist er dann kaum testbar oder wartbar.
Denn wie willst du Code sinnvoll testen, der nicht eine Eingabe bekommt und ein Ergebnis liefert, sondern der auf einer
GUI etwas mit einem Control macht?
(Klar muss man auch so etwas testen, aber das ist dann nicht die Businesslogik, sondern die
GUI-Logik.)
Wie es sauber geht hat BUG ja oben schon geschrieben, mit Interfaces.