Was die Zufallszahlen angeht: Eine ganz wichtige Eigenschaft von testfreundlicher Software ist, dass man keine festen Abhängigkeiten hat. Beispielsweise sollte ein Stück Software, das Zufallszahlen verbraucht, niemals fest von einem Zufallsgenerator abhängen, d.h. der spezielle Zufallsgenerator darf nicht unantastbar im Code fest verdrahtet sein, sondern muss nach außen offen für den Nutzer änderbar sein. D.h. der Nutzer übergibt dem Zufallszahlenverbraucher den Zufallszahlengenerator. Und im Fall eines Tests übergibst du dann eben einen getürkten Zufallsgenerator, der eine bestimmte, gewünschte Sequenz erzeugt.
Wie schon angedeutet sollte man das nicht nur für Zufallsgeneratoren so handhaben, sondern mit allen möglichen Abhängigkeiten. Nicht nur, weil dann Tests viel einfacher werden, sondern auch weil das auch sonst allerlei wesentliche Vorteile bezüglich Wiederverwendbarkeit des Codes hat. Das ist ein recht wichtiges Prinzip beim Design von Software und hat daher auch ein Schlagwort: Dependency Injection. Solltest du unbedingt mal angucken, wenn du halbwegs ernsthafte Programme schreibst, was du ja anscheinend auch vor hast. Der Zweck von Googletest ist unter anderem, dich dabei zu unterstützen.