@Before
  public void setUp() throws Exception {
    // Charakter erzeugen
    charakter = new Charakter(new CharakterDaten());
    voraussAdmin = new VoraussetzungenGeneratorAdmin(charakter);
    charakter.initCharakterAdmins(
        new SonderregelAdmin(charakter),
        new VerbilligteFertigkeitAdmin(charakter),
        voraussAdmin,
        new GeneratorMagieStatusAdmin(charakter));

    // Alle Prozessoren erzeugen
    HashMap<Class, Prozessor> hash = new HashMap<Class, Prozessor>();
    charakter.setProzessorHash(hash);
    hash.put(
        Eigenschaft.class,
        new ProzessorDecorator(charakter, new ProzessorEigenschaften(charakter)));
    hash.put(Talent.class, new ProzessorDecorator(charakter, new ProzessorTalent(charakter)));
    hash.put(Vorteil.class, new ProzessorDecorator(charakter, new ProzessorVorteil(charakter)));

    charakter.setProzessorHash(hash);
    prozessorEigenschaft = (ProzessorDecorator) charakter.getProzessor(Eigenschaft.class);
    prozessorTalent = (ProzessorDecorator) charakter.getProzessor(Talent.class);
    prozessorVorteil = (ProzessorDecorator) charakter.getProzessor(Vorteil.class);

    // Rassen erzeugen
    ras = new Rasse();
    ras.setId("RAS-test");

    // Erzeugen der Talente:
    // Talent 1:
    talent1 = createTalent("Talent 1");

    // Talent 2:
    talent2 = createTalent("Talent 2");

    // Vorteil 1:
    vorteil1 = new Vorteil();
    vorteil1.setId("VOR-test1");
    vorteil1.setMinStufe(1);
    vorteil1.setMaxStufe(10);
    vorteil1.setKostenProStufe(1.0d);

    // SF 2:
    vorteil2 = new Vorteil();
    vorteil2.setId("VOR-test2");
    vorteil2.setMinStufe(1);
    vorteil2.setMaxStufe(10);
    vorteil2.setKostenProStufe(1.0d);

    // Elemente zum Helden hinzufügen
    linkTalent1 = prozessorTalent.addNewElement(talent1);
    linkTalent2 = prozessorTalent.addNewElement(talent2);
    linkVorteil1 = prozessorVorteil.addNewElement(vorteil1);
    linkVorteil2 = prozessorVorteil.addNewElement(vorteil1);

    boxEigenschaft = prozessorEigenschaft.getElementBox();
  }
  /**
   * Erzeugt eine neues CharElement, außer die CharElemente: RassenVariante, KulturVariante oder
   * ProfessionsVarianet. Diese müssen über eine seperate Methode erzeugt werden.
   *
   * @param clazz Die Klasse des gewünschten zu erzeugenden CharElements
   * @return Eine neues CharElement vom typ "clazz"
   */
  public CharElement buildCharElement(Class clazz) {
    CharElement charElem;

    if (clazz == Talent.class) {
      charElem = new Talent();
      createFaehigkeit((Talent) charElem);
      ((Talent) charElem).setArt(Talent.Art.basis);
      ((Talent) charElem).setSorte(Talent.Sorte.gesellschaft);

    } else if (clazz == Zauber.class) {
      charElem = new Zauber();
      createFaehigkeit((Zauber) charElem);

    } else if (clazz == Repraesentation.class) {
      charElem = new Repraesentation();

    } else if (clazz == Vorteil.class) {
      charElem = new Vorteil();
      ((Fertigkeit) charElem).setArt(Fertigkeit.FertigkeitArt.allgemein);

    } else if (clazz == Nachteil.class) {
      charElem = new Nachteil();
      ((Fertigkeit) charElem).setArt(Fertigkeit.FertigkeitArt.allgemein);

    } else if (clazz == Sonderfertigkeit.class) {
      charElem = new Sonderfertigkeit();
      ((Fertigkeit) charElem).setArt(Fertigkeit.FertigkeitArt.allgemein);

    } else if (clazz == Gottheit.class) {
      charElem = new Gottheit();
      ((Gottheit) charElem).setGottheitArt(Gottheit.GottheitArt.zwoelfGoettlich);

    } else if (clazz == Liturgie.class) {
      charElem = new Liturgie();
      ((Liturgie) charElem).setArt(Liturgie.LiturgieArt.allgemein);

    } else if (clazz == RegionVolk.class) {
      charElem = new RegionVolk();
      ((RegionVolk) charElem).setArt(RegionVolk.RegionVolkArt.menschlich);

    } else if (clazz == Schrift.class) {
      charElem = new Schrift();
      createSchriftSprache((SchriftSprache) charElem);

    } else if (clazz == Sprache.class) {
      charElem = new Sprache();
      createSchriftSprache((SchriftSprache) charElem);

    } else if (clazz == Gegenstand.class) {
      charElem = new Gegenstand();
      ((Gegenstand) charElem).setArt(Gegenstand.GegenstandArt.sonstiges);

    } else if (clazz == DaemonenPakt.class) {
      charElem = new DaemonenPakt();

    } else if (clazz == MagierAkademie.class) {
      charElem = new MagierAkademie();
      ((MagierAkademie) charElem).setGilde(Gilde.unbekannt);

    } else if (clazz == SchwarzeGabe.class) {
      charElem = new SchwarzeGabe();

    } else if (clazz == SchamanenRitual.class) {
      charElem = new SchamanenRitual();
      ((SchamanenRitual) charElem).setGrad(1);

    } else if (clazz == Rasse.class) {
      charElem = new Rasse();

      ((Rasse) charElem).setArt(Rasse.RasseArt.menschlich);
      ((Rasse) charElem).setAlterWuerfel(new WuerfelSammlung(new int[] {1}, new int[] {3}, 15));
      /*
      ((Rasse) charElem).setHaarfarbe(
      		new FarbenAngabe[]{
      			new FarbenAngabe("Schwarz", 20),
      		});
      ((Rasse) charElem).setAugenfarbe(
      		new FarbenAngabe[]{
      			new FarbenAngabe("Schwarz", 20),
      		});
      */
      ((Rasse) charElem).setGeschlecht(Geschlecht.mannOderFrau);
      // ((Rasse) charElem).setKannGewaehltWerden(true);
      ((Rasse) charElem).setGeschwindigk(8);
      ((Rasse) charElem).setGewichtModi(100);
      ((Rasse) charElem).setGroesseWuerfel(new WuerfelSammlung(new int[] {2}, new int[] {20}, 160));

    } else if (clazz == Kultur.class) {
      charElem = new Kultur();

      ((Kultur) charElem).setArt(Kultur.KulturArt.menschlich);

    } else if (clazz == Profession.class) {
      charElem = new Profession();

      ((Profession) charElem).setAufwand(Profession.Aufwand.normal);
      ((Profession) charElem).setArt(Profession.ProfArt.gesellschaftlich);

    } else {
      throw new IllegalArgumentException(
          "Keine Behandlung für ein Element des Typs " + clazz.toString() + " vorhanden.");
    }

    createCharElement(charElem);

    return charElem;
  }