org.scalatest

# PrivateMethodTester

#### trait PrivateMethodTester extends AnyRef

Trait that facilitates the testing of private methods.

To test a private method, mix in trait `PrivateMethodTester` and create a `PrivateMethod` object, like this:

    val decorateToStringValue = PrivateMethod[String]('decorateToStringValue)

The type parameter on `PrivateMethod`, in this case `String`, is the result type of the private method you wish to invoke. The symbol passed to the `PrivateMethod.apply` factory method, in this case `'decorateToStringValue`, is the name of the private method to invoke. To test the private method, use the `invokePrivate` operator, like this:

    targetObject invokePrivate decorateToStringValue(1)

Here, `targetObject` is a variable or singleton object name referring to the object whose private method you want to test. You pass the arguments to the private method in the parentheses after the `PrivateMethod` object. The result type of an `invokePrivate` operation will be the type parameter of the `PrivateMethod` object, thus you need not cast the result to use it. In other words, after creating a `PrivateMethod` object, the syntax to invoke the private method looks like a regular method invocation, but with the dot (`.`) replaced by `invokePrivate`. The private method is invoked dynamically via reflection, so if you have a typo in the method name symbol, specify the wrong result type, or pass invalid parameters, the `invokePrivate` operation will compile, but throw an exception at runtime.

One limitation to be aware of is that you can't use `PrivateMethodTester` to test a private method declared in a trait, because the class the trait gets mixed into will not declare that private method. Only the class generated to hold method implementations for the trait will have that private method. If you want to test a private method declared in a trait, and that method does not use any state of that trait, you can move the private method to a companion object for the trait and test it using `PrivateMethodTester` that way. If the private trait method you want to test uses the trait's state, your best options are to test it indirectly via a non-private trait method that calls the private method, or make the private method package access and test it directly via regular static method invocations.

Linear Supertypes
AnyRef, Any
Known Subclasses
PrivateMethodTester
Ordering

1. Alphabetic
2. By inheritance

Inherited

1. Hide All
2. Show all

1. PrivateMethodTester
2. AnyRef
3. Any

Visibility

1. Public
2. All

### Type Members

1. #### class Invocation [T] extends AnyRef

   Class whose instances represent an invocation of a private method.

2. #### class Invoker extends AnyRef

   Class used via an implicit conversion to enable private methods to be tested.

3. #### class PrivateMethod [T] extends AnyRef

   Represent a private method, whose apply method returns an `Invocation` object that records the name of the private method to invoke, and any arguments to pass to it when invoked.

### Value Members

1. #### def != (arg0: AnyRef): Boolean

   Attributes
     final
   Definition Classes
     AnyRef

2. #### def != (arg0: Any): Boolean

   Attributes
     final
   Definition Classes
     Any

3. #### def ## (): Int

   Attributes
     final
   Definition Classes
     AnyRef → Any

4. #### def == (arg0: AnyRef): Boolean

   Attributes
     final
   Definition Classes
     AnyRef

5. #### def == (arg0: Any): Boolean

   Attributes
     final
   Definition Classes
     Any

6. #### object PrivateMethod extends AnyRef

   Contains a factory method for instantiating `PrivateMethod` objects.

7. #### implicit def anyRefToInvoker (target: AnyRef): Invoker

   Implicit conversion from `AnyRef` to `Invoker`, used to enable assertions testing of private methods.

   Implicit conversion from `AnyRef` to `Invoker`, used to enable assertions testing of private methods.

   target

     the target object on which to invoke a private method.

   Attributes
     implicit

8. #### def asInstanceOf [T0] : T0

   Attributes
     final
   Definition Classes
     Any

9. #### def clone (): AnyRef

   Attributes
     protected[lang]
   Definition Classes
     AnyRef
   Annotations
     @throws()

10. #### def eq (arg0: AnyRef): Boolean

    Attributes
      final
    Definition Classes
      AnyRef

11. #### def equals (arg0: Any): Boolean

    Definition Classes
      AnyRef → Any

12. #### def finalize (): Unit

    Attributes
      protected[lang]
    Definition Classes
      AnyRef
    Annotations
      @throws()

13. #### def getClass (): java.lang.Class[_]

    Attributes
      final
    Definition Classes
      AnyRef

14. #### def hashCode (): Int

    Definition Classes
      AnyRef → Any

15. #### def isInstanceOf [T0] : Boolean

    Attributes
      final
    Definition Classes
      Any

16. #### def ne (arg0: AnyRef): Boolean

    Attributes
      final
    Definition Classes
      AnyRef

17. #### def notify (): Unit

    Attributes
      final
    Definition Classes
      AnyRef

18. #### def notifyAll (): Unit

    Attributes
      final
    Definition Classes
      AnyRef

19. #### def synchronized [T0] (arg0: ⇒ T0): T0

    Attributes
      final
    Definition Classes
      AnyRef

20. #### def toString (): String

    Definition Classes
      AnyRef → Any

21. #### def wait (): Unit

    Attributes
      final
    Definition Classes
      AnyRef
    Annotations
      @throws()

22. #### def wait (arg0: Long, arg1: Int): Unit

    Attributes
      final
    Definition Classes
      AnyRef
    Annotations
      @throws()

23. #### def wait (arg0: Long): Unit

    Attributes
      final
    Definition Classes
      AnyRef
    Annotations
      @throws()

### Inherited from AnyRef

### Inherited from Any