4.8. Formularfelder vergleichen

Anzahl

Der einfachste vergleichende Test für Felder ist der, festzustellen, dass beide Dokumente gleich viele Felder enthalten:

@Test
public void haveSameNumberOfFields() throws Exception {
  String filenameTest = "documentUnderTest.pdf";
  String filenameReference = "reference.pdf";
  
  AssertThat.document(filenameTest)
            .and(filenameReference)
            .haveSameNumberOfFields()
  ;
}

Feldnamen

Beim nächst größeren Test müssen neben der Anzahl auch die Namen der Felder in jedem PDF-Dokument gleich sein. Diese Aussage wird folgendermaßen getestet:

@Test
public void haveSameFields_ByName() throws Exception {
  String filenameTest = "documentUnderTest.pdf";
  String filenameReference = "reference.pdf";
  
  AssertThat.document(filenameTest)
            .and(filenameReference)
            .haveSameFieldsByName()
  ;
}

Feldinhalte

Wenn über die Namen von Feldern hinaus auch die Inhalte der Felder verglichen werden sollen, muss die Methode haveSameFieldsByValue() verwendet werden. Gleichnamige Felder müssen gleiche Inhalte haben, sonst schlägt der Test fehl:

@Test
public void haveSameFields_ByValue() throws Exception {
  String filenameTest = "documentUnderTest.pdf";
  String filenameReference = "reference.pdf";
  
  AssertThat.document(filenameTest)
            .and(filenameReference) 
            .haveSameFieldsByValue() 1
  ;
}

1

Whitespaces werden für den Vergleich normalisiert, siehe 13.5: „Behandlung von Whitespaces“.

Kombination mehrerer Tests

Unterschiedliche Vergleiche können in einem Testfall verkettet werden:

@Test
public void compareManyItems() throws Exception {
  String filenameTest = "documentUnderTest.pdf";
  String filenameReference = "reference.pdf";
  
  AssertThat.document(filenameTest)
            .and(filenameReference)
            .haveSameAppearance()
            .haveSameText
  ;
}