How to assert greater than using JUnit Assert?

前端 未结 8 829
你的背包
你的背包 2020-12-25 09:04

I have these values coming from a test

previousTokenValues[1] = \"1378994409108\"
currentTokenValues[1] = \"1378994416509\"

and I try

相关标签:
8条回答
  • 2020-12-25 09:39

    When using JUnit asserts, I always make the message nice and clear. It saves huge amounts of time debugging. Doing it this way avoids having to add a added dependency on hamcrest Matchers.

    previousTokenValues[1] = "1378994409108";
    currentTokenValues[1] = "1378994416509";
    
    Long prev = Long.parseLong(previousTokenValues[1]);
    Long curr = Long.parseLong(currentTokenValues[1]);
    assertTrue("Previous (" + prev + ") should be greater than current (" + curr + ")", prev > curr);
    
    0 讨论(0)
  • 2020-12-25 09:40

    Alternatively if adding extra library such as hamcrest is not desirable, the logic can be implemented as utility method using junit dependency only:

    public static void assertGreaterThan(int greater, int lesser) {
        assertGreaterThan(greater, lesser, null);
    }
    
    public static void assertGreaterThan(int greater, int lesser, String message) {
        if (greater <= lesser) {
            fail((StringUtils.isNotBlank(message) ? message + " ==> " : "") +
                    "Expected: a value greater than <" + lesser + ">\n" +
                    "But <" + greater + "> was " + (greater == lesser ? "equal to" : "less than") + " <" + lesser + ">");
        }
    }
    
    0 讨论(0)
  • 2020-12-25 09:41

    You can put it like this

      assertTrue("your fail message ",Long.parseLong(previousTokenValues[1]) > Long.parseLong(currentTokenValues[1]));
    
    0 讨论(0)
  • 2020-12-25 09:47

    Just how you've done it. assertTrue(boolean) also has an overload assertTrue(String, boolean) where the String is the message in case of failure; you can use that if you want to print that such-and-such wasn't greater than so-and-so.

    You could also add hamcrest-all as a dependency to use matchers. See https://code.google.com/p/hamcrest/wiki/Tutorial:

    import static org.hamcrest.MatcherAssert.assertThat;
    import static org.hamcrest.Matchers.*;
    
    assertThat("timestamp",
               Long.parseLong(previousTokenValues[1]),
               greaterThan(Long.parseLong(currentTokenValues[1])));
    

    That gives an error like:

    java.lang.AssertionError: timestamp
    Expected: a value greater than <456L>
         but: <123L> was less than <456L>
    
    0 讨论(0)
  • 2020-12-25 09:48

    You should add Hamcrest-library to your Build Path. It contains the needed Matchers.class which has the lessThan() method.

    Dependency as below.

    <dependency>
      <groupId>org.hamcrest</groupId>
      <artifactId>hamcrest-library</artifactId>
      <version>1.3</version>
      <scope>test</scope>
    </dependency>
    
    0 讨论(0)
  • 2020-12-25 09:54
    assertTrue("your message", previousTokenValues[1].compareTo(currentTokenValues[1]) > 0)
    

    this passes for previous > current values

    0 讨论(0)
提交回复
热议问题