package org.testng;

/**
 * This class defines a pair of instance/class.  A method with @Factory
 * can return an array of these objects instead of Object[] so that
 * instances can be dynamic proxies or mock objects and still provide
 * enough information to TestNG to figure out what classes the
 * annotations should be looked up in.
 *
 * @author <a href="mailto:cedric@beust.com">Cedric Beust</a>
 */
public interface IInstanceInfo<T> {

  /**
   * @return The instance on which the tests will be invoked.
   */
  T getInstance();

  /**
   * @return The class on which the TestNG annotations should be looked for.
   */
  Class<T> getInstanceClass();
}
