Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

https://github.com/junit-team/junit4/wiki/Parameterized-tests

I dette afsnit følger en kort introduktion til den skabelon man skal følge for at lave en standard parametriseret JUnit4 test - efterfulgt af et eksempel.

Så følger en kort beskrivelse af de problemstillinger vi har haft ifm. oprettelsen af tests. Vi gennemgår de hjælpeklasser og beslutninger, som er lavet for at give et bedre overblik og en nemmere tilgang til at lave parametriseret tests - og til sidst et eksempel på brugen af hjælpeklasserne.

Introduktion

En parametriseret JUnit4 test klasse skal afvikles med org.junit.runners.Parameterized. Derfor angives annotation @RunWith(Parameterized.class) på klassen.

...

Datasæt til tests angives vha. org.junit.runners.Parameterized.Parameter. Her angiver man et index som input til annoteringen, så det peger på et specifikt Object i aktuelle Object[].

Code Block
languagejava
titleSimple Unittest
public class SimpleVaultTest {
	@Test
	public void testCertificate() {
		X509Certificate certificateToTest = CredentialVaultTestUtil.getCredentialVault().getSystemCredentialPair().getCertificate();
		DistinguishedName dn = new DistinguishedName(certificateToTest.getSubjectX500Principal());
		assertEquals("Forventede noget helt andet her?", "TU GENEREL MOCES M CPR gyldig", dn.getCommonName());
	}
}



Code Block
languagejava
titleKompleks Unittest
public class SimpleVaultTest {
	private X509Certificate certificateToTest;
	@Before
	public void setup() {
		certificateToTest = CredentialVaultTestUtil.getCredentialVault().getSystemCredentialPair().getCertificate();
	}
	@After
	public void tearDown() {
		certificateToTest = null;
	}
	@Test
	public void testCertificateCommonName() {
		DistinguishedName dn = new DistinguishedName(certificateToTest.getSubjectX500Principal());
		assertEquals("Forventede noget helt andet her?", "TU GENEREL MOCES M CPR gyldig", dn.getCommonName());
	}
	@Test
	public void testCertificateSubjectSerialNumber() {
		DistinguishedName dn = new DistinguishedName(certificateToTest.getSubjectX500Principal());
		assertEquals("Forventede noget helt andet her?", "CVR:30808460-RID:42634739", dn.getSubjectSerialNumber());
	}
}
Code Block
languagejava
titleKompleks Unittest
@RunWith(Parameterized.class)
public class SimpleVaultTest {
	@Parameter(0)
	public X509Certificate certificateToTest; //Skal være public!
	@Parameters
	public static Iterable<Object[]> data() {
		return Arrays.asList(new Object[][] {
				{ CredentialVaultTestUtil.getCredentialVault().getSystemCredentialPair().getCertificate() },
				{ CredentialVaultTestUtil.getMoces3CredentialVault().getSystemCredentialPair().getCertificate() }
		});
	}
	@Test
	public void testCertificateCommonName() {
		DistinguishedName dn = new DistinguishedName(certificateToTest.getSubjectX500Principal());
		assertEquals("Forventede noget helt andet her?", "TU GENEREL MOCES M CPR gyldig", dn.getCommonName());
	}
	@Test
	public void testCertificateSubjectSerialNumber() {
		DistinguishedName dn = new DistinguishedName(certificateToTest.getSubjectX500Principal());
		assertEquals("Forventede noget helt andet her?", "CVR:30808460-RID:42634739", dn.getSubjectSerialNumber());
	}
}