matheraum.de
Raum für Mathematik
Offene Informations- und Nachhilfegemeinschaft

Für Schüler, Studenten, Lehrer, Mathematik-Interessierte.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Schulmathe
  Status Primarstufe
  Status Mathe Klassen 5-7
  Status Mathe Klassen 8-10
  Status Oberstufenmathe
    Status Schul-Analysis
    Status Lin. Algebra/Vektor
    Status Stochastik
    Status Abivorbereitung
  Status Mathe-Wettbewerbe
    Status Bundeswettb. Mathe
    Status Deutsche MO
    Status Internationale MO
    Status MO andere Länder
    Status Känguru
  Status Sonstiges

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
StartseiteMatheForenJavaBridge
Foren für weitere Schulfächer findest Du auf www.vorhilfe.de z.B. Philosophie • Religion • Kunst • Musik • Sport • Pädagogik
Forum "Java" - Bridge
Bridge < Java < Programmiersprachen < Praxis < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Java"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Bridge: JUnit
Status: (Frage) überfällig Status 
Datum: 22:28 Mi 14.12.2011
Autor: dennis2

Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)

Aufgabe
Hallo, folgende Aufgabe ist gestellt:

Gestet werden soll eine Software zum Spielen des Kartenspiels Bridge (Black-Box-Testen).
Diese Software besteht aus vier Klassen:

PlayingCard
PlayingSet
Hand
BridgePlayer

und drei Aufzählungen:

Suit
Rank
Bid


Dabei sind die vorkompilierten class-Dateien gegeben und eine dazugehörige Doxygen-Dokumentation.


Die Methode getOpeningBid() in der Klasse BridgePlayer soll dazu dienen, die Stärke eines Blatts mit 13 unterschiedlichen Karten abzuschätzen und abhängig davon entweder ein Angebot abzugeben (s. diese Tabelle: "Alle Gebote im Bridge" bei Wikipedia: http://de.wikipedia.org/wiki/Bridge_(Kartenspiel)) oder zu passen.


Bei der Bewertung des Blatts gibt es zwei Kriterien:

1.) Kartenpunkte:

Ass = 4 Punkte
König = 3 Punkte
Dame = 2 Punkte
Bube = 1 Punkt
jede Zahlkarte = 0 Punkte

2.) Kartenverteilung:

Die vier grundlegenden Verteilungen sind:

a) Gleichmäßige Verteilung: Alle Karten sind gleichmäßig über die vier Farben verteilt. Je Farbe gibt es mindestens zwei und höchstens fünf Karten.

b) Einfarbige Verteilung: Setzt eine Karte mit mindestens 5 Karten voraus. Diese wird als dominant bezeichnet. Alle anderen Farben haben höchstens 4 Karten. Wenn die dominante Farbe genau 5 Karten hat, gibt es eine andere Farbe mit genau einer Karte.

c) Zweifarbige Verteilung: Setzt zwei Farben mit mindestens 5 Karten voraus. Diese werden als dominant bezeichnet.

d) Dreifarbige Verteilung: Setzt drei Farben mit mindestens 4 Karten voraus. Diese werden als dominant bezeichnet.



Die Aufgabe ist es, die Methode getOpeningBid() gegen folgende Anforderungen zu testen:

1. Fall: Das Blatt enthält nicht 13 unterschiedliche Karten. Ausgabe: Invalid
2. Fall: zwischen 15 und 22 Punkten und gleichmäßige Verteilung. Ausgabe: 1 NT
3. Fall: 14-22 Punkte, einfarbige Verteilung. Ausgabe: 1 Pik, wenn Pik die dominante Farbe ist usw.
4. Fall: 13-22 Punkte, zweifarbige Verteilung
5. Fall: 12-22 Punkte, dreifarbige Verteilung
6. Fall: 23 oder mehr
7. Fall: Voraussetzungen von Fall 1 bis 6 nicht erfüllt

Schwierigkeit:

Die Methode getOpenBid() ruft selbst die Methode getHand() auf, d.h.
Die Methode getHand() muss gestubbt werden.


Die Tests sollen direkt in den Doxygen-Kommentaren dokumentiert werden.


-------------------------------------------

Das war jetzt viel Text!!

Ich habe soweit alles vorbereitet, dass ich die Tests in Eclipse ausführen lassen könnte.
Es ist folgendes Gerüst für die Testklasse BridgePlayerTest.java gegeben:



Java Code:  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import org.junit.*;
import org.junit.runner.*;
import org.junit.Assert.*;

public class BridgePlayerTest {

@Test
public void testGetOpenBid_00()  {

   public Hand getHand()  {
   PlayingCard cards[] = new PlayingCard[13];
   cards[0]=CardSet.CLUB_K;
   cards[1]=CardSet.HEART_2;
   cards[2]=CardSet.SPADE_2;
   cards[3]=CardSet.DIAMOND_A;
   cards[4]=CardSet.CLUB_3;
   cards[5]=CardSet.CLUB_4;
   cards[6]=CardSet.CLUB_5;
   cards[7]=CardSet.CLUB_6;
   cards[8]=CardSet.CLUB_7;
   cards[9]=CardSet.CLUB_8;
   cards[10]=CardSet.CLUB_9;
   cards[11]=CardSet.CLUB_A;
   cards[12]=CardSet.SPADE_A;

   return new Hand( cards );

}
};

Assert.assertTrue("Player doesn't bid 1 club on 15 points and 9-2-2-1 distribution!", player.getOpeningBid() == Bid.ONE_CLUB );

}

@Test
public void testGetOpeningBid_01() {

// Hier wird jetzt folgendes Blatt erzeugt, ich habe aber keine Lust mehr, das abzutippen:
//   Kreuz 2, Herz 2, Pik 2, Karo 4, Kreuz 3, Kreuz 4, Kreuz 5, Kreuz 6, Kreuz 7, Kreuz 8, Kreuz 9,
//   Kreuz 10, Kreuz Bube



Jede Anforderung muss durch mindestens einen Testfall abgedeckt werden. Grenzfälle sollen auch getestet werden.


Verstehe ich das richtig, dass hier zwei Testfälle vorgegeben sind:
Der erste für Fall 3, der zweite für den Fall Pass?

Und dass ich jetzt diese beiden Fälle erstmal implementieren muss (inkl. Grenzfälle) und dann das Gleiche für die restlichen 5 Fälle?

Oder sind die gegebenen beiden Fälle komplett schon fertig?!



Was muss ich denn hier eigentlich in dem Code ergänzen?

Und wie kann ich die Methode getHand() stubben?
__________________


Kann es sein, daß der obige Quellcode bereits das Stubben und überhaupt alles was man machen soll, an einem Beispielfall zeigt?

Eigentlich müsste ich doch das jetzt "nur noch" auf alle anderen Fälle übertragen, sprich mir Beispielblätter ausdenken?


Sehe ich das richtig oder missverstehe ich die Aufgabe bzw. den gegebenen Quellcode?

        
Bezug
Bridge: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 11:52 Do 15.12.2011
Autor: dennis2

Ich frage das eigentlich nur, weil in der Aufgabe steht, dass wir die Methode gethand() stubben sollen und so wie ich das sehe, ist das doch schon vorgemacht?!

Bezug
                
Bezug
Bridge: Testcase Doku
Status: (Frage) überfällig Status 
Datum: 20:14 Do 15.12.2011
Autor: dennis2

Aufgabe
Hallo, ich habe jetzt ein paar Tests geschrieben und nun soll man diese direkt in den Doxygen-Kommentaren dokumentieren und dazu Folgendes nutzen:

1:
2: @Test void testXYZ001 {
3: ...
4: /**
5:  * @test
6:  * <b>tag</b> (Eindeutiger Bezeichner für den Testfall) <br>
7:  * <b>condition</b> (Vorbedingung für die Testfallausführung<br>
8:  * <b>event</b> Beschreibung des Funktionsaufrufs<br>
9:  * <b>expected</b>Beschreibung der erwarteten Resultate <br>
10:  * <b>req</b> Verweis auf 1. Voraussetzung <br>
11:  * <b>req</b> Verweis auf 2. Voraussetzung <br>
12:  */
13: //Hier folgt der eigentliche Test.
14: ...
15: }

Also ich frage mich, was ich da jeweils hinschreiben muss!

Als Beispiel mal diesen Test, wo ich Testfall R003 teste, der lautet:

Name: R003
Voraussetzungen: Zwischen 14 und 22 Punkten und eine einfarbige Verteilung
Ausgabe: 1Kreuz, wenn Kreuz die dominante Farbe ist
1Karo, wenn Karo die dominante Farbe ist
usw.

1: // "normaler" Testfall für R003
2:     @Test
3:     public void testGetOpeningBid_00() {
4:     
5:      /**
6:       * @test
7:       * <b>tag</b> "R003" <br>
8:       * <b>condition</b><br>
9:       * <b>event</b>>br>
10:       * <b>expected</b>Player bids 1 club<br>
11:       * <b>req</b><br>
12:       * <b>req</b><br>
13:       * 
14:       */
15:
16:       BridgePlayer player = new BridgePlayer() {
17:         
18:         public Hand getHand() {
19:           PlayingCard cards[] = new PlayingCard[13];
20:           cards[0] = CardSet.CLUB_K;
21:           cards[1] = CardSet.HEART_2;
22:           cards[2] = CardSet.SPADE_2;
23:           cards[3] = CardSet.DIAMOND_A;
24:           cards[4] = CardSet.CLUB_3;
25:           cards[5] = CardSet.CLUB_4;
26:           cards[6] = CardSet.CLUB_5;
27:           cards[7] = CardSet.CLUB_6;
28:           cards[8] = CardSet.CLUB_7;
29:           cards[9] = CardSet.CLUB_8;
30:           cards[10] = CardSet.CLUB_9;
31:           cards[11] = CardSet.CLUB_A;
32:           cards[12] = CardSet.SPADE_A;
33:
34:           return new Hand( cards );
35:         }
36:       };
37:
38:       Assert.assertTrue( "Player doesn't bid 1 club on 15 points and 9-2-1-1 distribution!", player.getOpeningBid() == Bid.ONE_CLUB );
39:     }



Also meine Frage:

tag ist hier "R003"
expected ist hier: Player bids 1 club

Aber was ist condition?
Was ist event?
Was ist req?


    

Bezug
                        
Bezug
Bridge: Fälligkeit abgelaufen
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 20:20 Sa 17.12.2011
Autor: matux

$MATUXTEXT(ueberfaellige_frage)
Bezug
        
Bezug
Bridge: Fälligkeit abgelaufen
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 23:20 Fr 16.12.2011
Autor: matux

$MATUXTEXT(ueberfaellige_frage)
Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Java"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.schulmatheforum.de
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]