Teildatensatz extends Satz { public void remove(final Feld feld) { this.remove(feld.getBezeichnung()); } Teildatensatz(final NumFeld satzart);  Teildatensatz(final NumFeld satzart, final int nr);  Teildatensatz(final int satzart, final int nr);  Teildatensatz(final Teildatensatz other); private  Teildatensatz(final int satzart, final Zeichen satznummer); Zeichen getNummer(); void setSatznummer(Zeichen satznummer); @Override void add(final Feld feld); void remove(final Feld feld); @Override void remove(final Bezeichner bezeichner); @Override void set(final Bezeichner name, final String value); @Override Feld getFeld(final Enum feldX); @Override Feld getFeld(final Bezeichner bezeichner); Feld getFeld(final int nr); boolean hasFeld(final Enum feldX); @Override boolean hasFeld(final Bezeichner bezeichner); boolean hasFeld(final Feld feld); @Override Collection<Feld> getFelder(); @Override void export(final Writer writer); @Override void export(final Writer writer, final String eod); @Override void importFrom(final String content); @Override boolean isValid(); @Override List<ConstraintViolation> validate(); @Override Object clone();  }
@Test(expected = IllegalArgumentException.class) public void testRemove() { Teildatensatz tds = new Teildatensatz(100, 1); Zeichen satznummer = new Zeichen(new Bezeichner("Satznummer"), 256); satznummer.setInhalt('1'); tds.add(satznummer); assertEquals(satznummer, tds.getFeld(satznummer.getBezeichnung())); tds.remove(satznummer.getBezeichnung()); try { tds.getFeld(satznummer.getBezeichnung()); fail("IllegalArgumentException bei fehlendem Feld erwartet"); } catch (IllegalArgumentException ex) { assertThat("Exception sollte Bezeichner und Satzart beschreiben", ex.getMessage(), allOf(containsString("Satznummer"), containsString("Satzart 0100"))); throw ex; } }