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