Creating spring context with mocked beans

In my projects I create some integrative tests which should base on the original spring context definition. A small number of these tests are very useful in order to test the integration of the application. Even thought these test are integrative and in principle I do not want to mock away anything there are some beans in the context for which it is more practicable to mock them away. An example of this kind of beans is a mailer-service: The complexity and robustness of these tests is clearly decrease when this bean is mocked away.

Surprisingly, I could not found a description how you could create a spring context which is nearly untouched except of one single bean. But, there is a very simple way how you could create this kind of spring context for an integrative test:


@Test
public void testSomething()
{
   final Mockery mockery = new Mockery();
   final IMailer mailer = mockery.mock(IMailer.class);

   final ApplicationContext context = createContext("mailer", mailer);

   // do some tests using the context
}

private ApplicationContext createContext(
                            final String beanName, final Object object)
{
   return new ClassPathXmlApplicationContext(
                          new String[] { "applicationContext.xml" })
   {
      @Override
      protected void postProcessBeanFactory(
                          ConfigurableListableBeanFactory beanFactory)
      {
         beanFactory.registerSingleton(beanName, object);
      }
   };
}

That’s it all! As you can see, you only have to overwrite the method postProcessBeanFactory() and call the method registerSingleton() inside it. Obviously, this example can simply be extended such that more than one single mock-object is injected into the context.

Wahrscheinlichkeiten beim Doppelkopf zu Sechst

Hallo,
letzte Woche habe ich zum ersten Mal Doppelkopf zu sechst gespielt. Und als alter Theoretiker wollte ich natürlich sofort die Wahrscheinlichkeiten von bestimmten Dingen berechnen. Hier meine Ergebnisse.

Erstmal ein paar allgemeine Vorgaben:

  • Wir spielen mit 48 Karten, 6 Personen, d.h. jeder bekommt 8 Karten.
  • Es gibt insgesamt also nur 8 Stiche, pro Stich 6 Karten.

Aufkarten eines Fehl-Asses

Beim Spiel zu viert ist es gesetzt, dass am Anfang die Fehl-Asse aufgekartet werden. Je nachdem, wieviele weitere Karten man selber von der Farbe hat, kann man damit mit einer relativ hohen Wahrscheinlichkeit einfache und auch fette Stiche machen.

Die ersten Erfahrungen beim Doppelkopf zu sechs hinterließen bei mir dein Eindruck, dass diese Fehlstiche viel seltener durch gehen. Wie ist das also tatsächlich? Weiter unten sind die möglichen Verteilungen der anderen Karten dargestellt. Hier schonmal das Fazit, mit welcher Wahrscheinlichkeit das Ass läuft:

Wahrscheinlichkeit, dass ein aufgespieltes Ass läuft

blankes Kreuz- oder Pik-Ass 27,7%
einfach besetztes Kreuz- oder Pik-Ass 14,9%
doppelt besetztes Kreuz- oder Pik-Ass oder blankes Herz-Ass 05,0%

Die Erfolgsaussichten sind also entäuschend gering. Immerhin kann es gut sein, dass der eigene Mann den Stich macht. Unter der einfachen Annahme, dass nichts weiter bekannt ist, ergibt sich natürlich eine Wahrscheinlichkeit von 40% dass ein Stich, den ich nicht selber mache, bei meinem Mann landet. Damit ergibt sich für das Aufspiel:

Wahrscheinlichkeit, dass ein aufgespieltes Ass läuft oder beim Partner landet

blankes Kreuz- oder Pik-Ass 27,7% + 28,9% = 56,6%
einfach besetztes Kreuz- oder Pik-Ass 14,9% + 34,0% = 48,9%
doppelt besetztes Kreuz- oder Pik-Ass oder blankes Herz-Ass 05,0% + 39,8% = 44,8%

Spielempfehlung

Mir selber ist nicht ganz klar, welche Spielempfehlung sich daraus ergibt. Denn

  • einerseits sind die Erfolgswahrscheinlichkeiten nur bei etwas über oder unter 50%. Das ist wenig. Und damit ist ein Aufspiel kein Spiel, das meine Gesamtgewinnwahrscheinlichkeit deutlich erhöht.
  • Andererseits habe ich das Ass nun mal auf der eigenen Hand. Und wenn ich es nicht selber aufspiele, ist die Wahrscheinlichkeit, dass der Stich mit diesem meinem Ass zuhause ist, noch geringer!

Also: Ich werde die Ässer wohl doch weiter aufspielen. Bin mir aber nicht sicher, ob das tatsächlich optimal ist. Wie sind denn eure Erfahrungen dazu?

Details

Kartenverteilung bei einem eigenem blanken Ass

Verteilung der anderen Karten
Wahrscheinlichkeit
3 2 1 1 0 32,3%
2 2 1 1 1 21,5%
2 2 2 1 0 18,8%
3 2 2 0 0 07,1%
3 1 1 1 1 06,2%
4 2 1 0 0 05,0%
3 3 1 0 0 04,0%
4 1 1 1 0 03,8%
5 1 1 0 0 00,6%
4 3 0 0 0 00,4%
5 2 0 0 0 00,2%
6 1 0 0 0 00,0%
7 0 0 0 0 00,0%

Kartenverteilung bei einem einfach besetzten eigenen Ass

Verteilung der anderen Karten
Wahrscheinlichkeit
2 2 1 1 0 39,2%
3 2 1 0 0 19,6%
2 1 1 1 1 14,9%
3 1 1 1 0 14,9%
2 2 2 0 0 05,7%
4 1 1 0 0 03,5%
4 2 0 0 0 01,0%
3 3 0 0 0 00,8%
5 1 0 0 0 00,2%
6 0 0 0 0 00,0%


Kartenverteilung bei einem doppelt besetzten eigenen Ass (bzw. einem blanken Herz Ass)

Verteilung der anderen Karten
Wahrscheinlichkeit
2 1 1 1 0 43,6%
2 2 1 0 0 28,6%
3 1 1 0 0 16,3%
1 1 1 1 1 05,0%
3 2 0 0 0 04,8%
4 1 0 0 0 01,7%
5 0 0 0 0 00,0%