Page History
...
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 til Parameterized tests
En parametriseret JUnit4 test klasse skal afvikles med org.junit.runners.Parameterized. Derfor angives annotation @RunWith(Parameterized.class) på klassen.
Der skal angives en metode, som annoteres med org.junit.runners.Parameterized.Parameters, som er de parametre der bruges i test metoderne. Metoden returnere en java.lang.Iterable bestående af et Object[], hvor hvert Object[] er det datasæt af parametre, som et test genneløb skal bruge. Testene gennemløbes for hvert entry der er i java.lang.Iterable.
Inputtet 'name' til org.junit.runners.Parameterized.Parameters annoteringen angiver navnet på parametriseret test.
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[].
Hjælpeklasser til Parameterized tests i Seal.java
Code Block | ||||
---|---|---|---|---|
| ||||
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 | ||||
---|---|---|---|---|
| ||||
@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() }, }); } @Test public void testCertificateCommonName() { CredentialVaultTestUtil.getMoces3CredentialVault().getSystemCredentialPair().getCertificate() } } DistinguishedName dn = new DistinguishedName(certificateToTest.getSubjectX500Principal()); assertEquals("Forventede noget helt andet her?", "TU GENEREL MOCES M CPR gyldig", dn.getCommonName()); } @Test public void testCertificateCommonNametestCertificateSubjectSerialNumber() { DistinguishedName dn = new DistinguishedName(certificateToTest.getSubjectX500Principal()); assertEquals("Forventede noget helt andet her?", "CVR:30808460-RID:42634739", dn.getSubjectSerialNumber()); } } |
Code Block | ||||
---|---|---|---|---|
| ||||
@RunWith(Parameterized.class) public class SimpleVaultTest { @Parameter(0) public X509Certificate certificateToTest; //Skal være public! @Parameter(1) public String expectedCommonName; @Parameter(2) public String expectedSubjectSerialNumber; @Parameters(name ="Test {0}") public static Iterable<Object[]> data() { return Arrays.asList(new Object[][] {{ CredentialVaultTestUtil.getCredentialVault().getSystemCredentialPair().getCertificate(), "TU GENEREL MOCES M CPR gyldig", "CVR:30808460-RID:42634739" }, { CredentialVaultTestUtil.getMoces3CredentialVault().getSystemCredentialPair().getCertificate(), "Tonnis Vestergaard", "UI:DK-153279bd-07cb-4128-a8b1-666107fba6d5"}}); } @Test public void testCertificateCommonName() { DistinguishedName dn = new DistinguishedName(certificateToTest.getSubjectX500Principal()); assertEquals("Forventede noget helt andet her?", expectedCommonName, dn.getCommonName()); } @Test public void testCertificateSubjectSerialNumber() { DistinguishedName dn = new DistinguishedName(certificateToTest.getSubjectX500Principal()); assertEquals("Forventede noget helt andet her?", expectedSubjectSerialNumber, dn.getSubjectSerialNumber()); } } |
Code Block | ||||
---|---|---|---|---|
| ||||
@RunWith(Parameterized.class) public class SimpleVaultTest { @Parameter(0) public String suiteName; @Parameter(1) public Validators validators; @Parameter(2) public X509Certificate certificateToTest; @Parameters(name = "{0}") public static Iterable<Object[]> data() { TestDataBuilder builder = new TestDataBuilder(); TestData credentialVaultTest = builder.newTest("CredentialVault"); credentialVaultTest.parameters(CredentialVaultTestUtil.getCredentialVault().getSystemCredentialPair().getCertificate()); credentialVaultTest.expect("CertificateCommonName", "TU GENEREL MOCES M CPR gyldig"); credentialVaultTest.expect("SubjectSerialNumber", "CVR:30808460-RID:42634739"); TestData moces3CredentialVaultTest = builder.newTest("Moces3CredentialVault"); moces3CredentialVaultTest.parameters(CredentialVaultTestUtil.getMoces3CredentialVault().getSystemCredentialPair().getCertificate()); moces3CredentialVaultTest.expect("CertificateCommonName", "Tonnis Vestergaard"); moces3CredentialVaultTest.expect("SubjectSerialNumber", "UI:DK-153279bd-07cb-4128-a8b1-666107fba6d5"); return builder.build(); } @Test public void testCertificateCommonName() { DistinguishedName dn = new DistinguishedName(certificateToTest.getSubjectX500Principal()); validators.getValidator("CertificateCommonName").assertSuccess(dn.getCommonName()); } @Test public void testCertificateSubjectSerialNumber() { DistinguishedName dn = new DistinguishedName(certificateToTest.getSubjectX500Principal()); validators.getValidator("SubjectSerialNumber").assertSuccess(dn.getSubjectSerialNumber()); } } |
...