I think we are also missing the other side of the coin.
Once we deprecate something and we now need a equivalent test that tests 
the same behavior using the new method/approach. i.e now we have to 
double up on the testing of said deprecated method/feature/class. First 
we have to keep the tests around that use the deprecated and now we need 
the same test for the new. Otherwise we cannot ever be certain that both 
approaches work.
In addition to this, if we don't create both tests, we have to create 
all the tests at the time of removal, otherwise we lose coverage.
--Udo

On 3/16/20 9:27 AM, Joris Melchior wrote:
+1 on leaving testing of deprecated functionality in place

On Mon, Mar 16, 2020 at 11:50 AM Dan Smith <dsm...@pivotal.io> wrote:

+1

One point though - we do need to leave some tests that specifically test
the deprecated method(s), since we still support the deprecated APIs until
we remove them. Everything else should be converted.

-Dan

On Sun, Mar 15, 2020 at 6:41 PM Jacob Barrett <jbarr...@pivotal.io> wrote:

Hey Team,

When deprecating a symbol, like class or method, please included a
reference to the replacement in the java docs. Also please include an
example of converting from the old API to the new. I am finding many many
places in the source where deprecated code has no hints at all. As many
of
us don’t take the effort to immediately convert old tests over to the new
APIs the context is lost when someone finally does get around to it. For
public APIs this is extremely important so that users know how to migrate
their code with as few roadblocks as possible.

Here is an example of something that is much better than most of what I
am
seeing.

/**
  * @deprecated Replaced with something better and safer.
  * Replaced by {@link Bar}.
  */
@Deprecated
class Foo {
   /**
    * Do something.
    *
    * @deprecated Replaced with something better.
    * Replaced by {@link Bar#doSomethingBetter()}
    */
   @Deprecated
   public void doSomething() {}

   /**
    * Do something.
    *
    * @deprecated Implementation is not safe.
    * Replaced with {@link Bar#doSomethingBetter()} and {@link
Bar#doSomethingElse()}.
    * Migration example, replace:
    * <pre>{@code
    *   Foo foo = new Foo();
    *   foo.doSomethingAndSomethingElse();
    * }</pre>
    * with:
    * <pre>{@code
    *   Bar bar = Bar();
    *   bar.doSomethingBetter();
    *   bar.doSomethingElse();
    * }</pre>
    */
   @Deprecated
   public void doSomethingAndSomethingElse() {}
}

class Bar {
   public void doSomethingBetter() {}
   public void doSomethingElse() {}
}

-Jake


Reply via email to