All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.tsl2.nano.autotest.creator.InitAllAutoTests Maven / Gradle / Ivy

package de.tsl2.nano.autotest.creator;

import java.security.Permission;
import java.util.Arrays;
import java.util.Collection;
import java.util.Locale;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;

import de.tsl2.nano.autotest.BaseTest;
import de.tsl2.nano.core.IPreferences;
import de.tsl2.nano.core.cls.BeanClass;
import de.tsl2.nano.core.cls.ClassFinder;

/**
 * This parameterized test class is a workaround on test suites having parameterized tests that have to be initialized from outside.

* The external application, using this framworks auto test classes, should be implemented like this: *

 *	@RunWith(Suite.class)
 *	@SuiteClasses({InitAllAutoTests.class, AutoFunctionTest.class, CurrentStatePreservationTest.class})
 *	public class AllAutoTests {
 *		public static void init() {
 *			System.setProperty("tsl2.functiontest.filter", MyClassToTest.class.getPackage().getName());
 *		}
 *	}
 * 
* * * @author Thomas Schneider */ @RunWith(Parameterized.class) public class InitAllAutoTests { @Parameters public static Collection parameters() { IPreferences.reset(); // the string.set uses german city names Locale.setDefault(Locale.GERMANY); System.setProperty("tsl2.nano.logfactory.off", "true"); System.setProperty("tsl2.nano.test", "true"); System.setProperty("tsl2.json.recursive", "false"); // System.setProperty("tsl2.functiontest.testneverfail", "true"); if (BaseTest.isExternalCIPlatform()) System.setProperty("tsl2.functiontest.donttest", "true"); if (Boolean.getBoolean("tsl2.functiontest.donttest")) return Arrays.asList(); BaseTest.useTargetDir(); if (Boolean.getBoolean("tsl2.functiontest.forbidSystemExit")) forbidSystemExit(); BeanClass.callStatic("de.tsl2.nano.util.autotest.creator.AllAutoTests", "init"); return Arrays.asList(); } @Test public void nothing() {} public static void set(boolean on, Enum...properties) { Arrays.stream(properties).forEach( e -> set(e, on)); } public static void set(boolean on, String...properties) { Arrays.stream(properties).forEach( p -> System.setProperty(AFunctionTester.PREF_PROPS + p, String.valueOf(on))); } public static void set(Enum p, Object value) { IPreferences.set(p, value); } public static void set(String property, Object value) { System.setProperty(AFunctionTester.PREF_PROPS + property, value.toString()); } public static String matchPackage(Class...classes) { return matchPackage(true, classes); } public static String matchPackage(boolean loadAllClassesInPackage, Class...classes) { StringBuilder buf = new StringBuilder(".*("); for (int i = 0; i < classes.length; i++) { if (loadAllClassesInPackage) ClassFinder.getClassesInPackage(classes[i].getPackage().getName(), null); buf.append(classes[i].getPackage().getName() + (i < classes.length - 1 ? "|" : "")); } return buf.append(").*").toString(); } public static void forbidSystemExit() { try { System.setSecurityManager(new SecurityManager() { @Override public void checkPermission(Permission perm) { //ALL PERMISSIONS! (on test) } @Override public void checkPermission(Permission perm, Object context) { //ALL PERMISSIONS! (on test) } @Override public void checkExit(int status) { StackTraceElement caller = Thread.currentThread().getStackTrace()[4]; if (!caller.toString().contains("surefire")) throw new IllegalStateException("systemexit forbidden:" + status + "(" + caller + ")"); } }); } catch (Exception e) { e.printStackTrace(); } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy