private void prepareTestWithParams()

in old/fine-junit/src/main/java/org/jetbrains/dekaf/junitft/FineRunner.java [61:97]


  private void prepareTestWithParams(Class<?> klass, Method method) {
    TestWithParams annotation = method.getAnnotation(TestWithParams.class);
    String paramsMemberName = annotation.params();

    try {
      Field paramsField = null;
      for (Class<?> klazz = klass; paramsField == null && klazz != null; klazz = klazz.getSuperclass()) {
        try {
          paramsField = klazz.getDeclaredField(paramsMemberName);
        }
        catch (Exception e) {
          paramsField = null;
        }
      }

      if (paramsField == null) {
        throw new IllegalStateException("Class " + klass.getSimpleName() + " has no field " + paramsMemberName);
      }

      paramsField.setAccessible(true);
      Class<?> paramsFieldType = paramsField.getType();
      if (paramsFieldType.isArray()) {
        Object o = paramsField.get(klass);
        Object[] rows = (Object[]) o;
        for (Object row : rows) {
          ParamTestMethod m = new ParamTestMethod(klass, method, row);
          myTestMethods.add(m);
        }
      }
      else {
        // TODO
      }
    }
    catch (IllegalAccessException e) {
      // TODO
    }
  }