Closed
Bug 944165
Opened 12 years ago
Closed 12 years ago
Implement full JUnit assert*(String, ...) API in AssertionHelper
Categories
(Firefox for Android Graveyard :: Testing, defect)
Tracking
(Not tracked)
RESOLVED
FIXED
Firefox 29
People
(Reporter: mcomella, Assigned: isurae)
References
Details
(Whiteboard: [mentor=mcomella][lang=java])
Attachments
(1 file, 2 obsolete files)
|
4.31 KB,
patch
|
mcomella
:
review+
|
Details | Diff | Splinter Review |
Sorry, a bit tedious, but necessary. :)
Alternatively, this can be (and likely will be) done as we go along.
| Reporter | ||
Updated•12 years ago
|
Whiteboard: [mentor=mcomella][lang=java]
| Assignee | ||
Comment 1•12 years ago
|
||
I'm starting to work on this. To confirm, this is the API you want to mimic?
http://junit.sourceforge.net/javadoc/org/junit/Assert.html
| Reporter | ||
Comment 2•12 years ago
|
||
Thanks for clarifying - that looks ideal!
We want to enforce good testing practice, however, so only include the methods that have the `String message` parameter. Also, the deprecated methods are unnecessary, as are the assertThat methods since we don't have any intention of supporting hamcrest matchers.
Good luck!
Assignee: nobody → isurae
Status: NEW → ASSIGNED
| Assignee | ||
Comment 4•12 years ago
|
||
Hi Michael,
Yes I'm been terribly busy during the holidays. I will get some time to work on it this week.
Flags: needinfo?(isurae)
| Reporter | ||
Comment 5•12 years ago
|
||
No worries, take your time! I just wanted to make sure that you hadn't decided to stop working on it (in which case, I'd want to unassign it so others can have a chance). As long as you are still committed to working on it, there's no rush!
And as always, thanks for your help! :)
| Assignee | ||
Comment 6•12 years ago
|
||
Attachment #8358619 -
Flags: review?(michael.l.comella)
| Assignee | ||
Comment 7•12 years ago
|
||
Please disregard. I will regenerate the patch when I get home later today.
| Reporter | ||
Comment 8•12 years ago
|
||
Comment on attachment 8358619 [details] [diff] [review]
944165.patch
Sure, will do.
Attachment #8358619 -
Flags: review?(michael.l.comella)
| Assignee | ||
Comment 9•12 years ago
|
||
Attachment #8358619 -
Attachment is obsolete: true
Attachment #8358739 -
Flags: review?(michael.l.comella)
| Reporter | ||
Comment 10•12 years ago
|
||
Comment on attachment 8358739 [details] [diff] [review]
944165.patch
Review of attachment 8358739 [details] [diff] [review]:
-----------------------------------------------------------------
This is going in the right direction: just make sure you're using all the available APIs at your disposal!
::: mobile/android/base/tests/helpers/AssertionHelper.java
@@ +22,5 @@
> sAsserter = context.getAsserter();
> }
>
> + public static void assertArrayEquals(final String message, final byte[] expecteds, final byte[] actuals) {
> + assertEquals(message, expecteds.length, actuals.length);
Sorry to not mention this before, but Java has a built-in `Arrays.equals` method [1]. Do you mind using that instead? It's less for us to maintain (and may catch some edge cases we don't see here). There should be a version for each of the array types we use below.
[1]: https://developer.android.com/reference/java/util/Arrays.html#equals%28char[],%20char[]%29
@@ +24,5 @@
>
> + public static void assertArrayEquals(final String message, final byte[] expecteds, final byte[] actuals) {
> + assertEquals(message, expecteds.length, actuals.length);
> + for (int i = 0; i < expecteds.length(); i++) {
> + assertEquals(message, expecteds[i], actuals[i]);
We should be using a class implementing the Assert interface [1] for all of these calls, rather than assertEquals which adds a level of indirection and makes the resulting assertion failure harder to read. The sAsserter statically defined in this class implements it. Specifically, we'll probably be using the `Assert.is`, `Assert.ok`, and `Assert.isnot` methods.
If you look at the already existing calls, they are a good example.
[1]: https://mxr.mozilla.org/mozilla-central/source/build/mobile/robocop/Assert.java#7
@@ +35,5 @@
> + assertEquals(message, expecteds[i], actuals[i]);
> + }
> + }
> +
> + public static void assertArrayEquals(final String message, final short[] expecteds, final short[] actuals) {
nit: A bit pedantic on my part, but can you move this below assertArrayEquals(String, Object[], ...)? It's not alphabetized. :P
@@ +72,5 @@
> public static void assertEquals(final String message, final Object expected, final Object actual) {
> sAsserter.is(actual, expected, message);
> }
>
> + public static void assertEquals(final String message, final double expected, final double actual, final double delta) {
Good work on this method - there are a lot of cases implemented here I wasn't thinking of!
However, there is also a `Double.compare` method [1] that we can use that takes care of a lot of this (keep in mind it returns an int, like `Comparable.compareTo` and it has some edge cases, see [1]). It doesn't have the delta comparison though, so we'll still need to do that ourselves - the code below looks good for that.
[1]: https://developer.android.com/reference/java/lang/Double.html#compare%28double,%20double%29
@@ -25,5 @@
> public static void assertEquals(final String message, final Object expected, final Object actual) {
> sAsserter.is(actual, expected, message);
> }
>
> - public static void assertEquals(final String message, final int expected, final int actual) {
Why did you remove the int version?
@@ +79,5 @@
> + }
> + if (Double.isInfinite(expected)) {
> + assertTrue(message, expected == actual);
> + }
> + else {
nit: `} else {`
Attachment #8358739 -
Flags: review?(michael.l.comella) → feedback+
| Reporter | ||
Comment 11•12 years ago
|
||
> Why did you remove the int version?
Nevermind, I noticed there's a replacement long version. Nice catch. :)
| Assignee | ||
Comment 12•12 years ago
|
||
Attachment #8358739 -
Attachment is obsolete: true
Attachment #8359406 -
Flags: review?(michael.l.comella)
| Reporter | ||
Comment 13•12 years ago
|
||
Comment on attachment 8359406 [details] [diff] [review]
944165.patch
Review of attachment 8359406 [details] [diff] [review]:
-----------------------------------------------------------------
lgtm! Don't forget to checkin-needed!
Thanks for your help!
Attachment #8359406 -
Flags: review?(michael.l.comella) → review+
| Assignee | ||
Updated•12 years ago
|
Keywords: checkin-needed
Comment 14•12 years ago
|
||
Flags: in-testsuite+
Keywords: checkin-needed
Whiteboard: [mentor=mcomella][lang=java] → [mentor=mcomella][lang=java][fixed-in-fx-team]
Status: ASSIGNED → RESOLVED
Closed: 12 years ago
Resolution: --- → FIXED
Whiteboard: [mentor=mcomella][lang=java][fixed-in-fx-team] → [mentor=mcomella][lang=java]
Target Milestone: --- → Firefox 29
Updated•5 years ago
|
Product: Firefox for Android → Firefox for Android Graveyard
You need to log in
before you can comment on or make changes to this bug.
Description
•