I am having a bit of trouble understanding with the fail() method for JUnit tests does in practice. I looked around online and saw from the junit website that fail(java.lang.String message) "Fails a test with the given message." In the JUnit test I'm looking at, this is the following code:

```
@Test (expected = RuntimeException.class)
    public void testBadCombine(){
      AvocadoPortion ap1 = new AvocadoPortion(amount1);
      AvocadoPortion ap2 = new AvocadoPortion(amount2);
      IngredientPortion ap3 = ap1.combine(ap2);
      CrabPortion cp1= new CrabPortion(2);

      ap1.combine(cp1);
      fail("Expected RuntimeException to be thrown");
}

```

Can someone please explain what the (expected = RuntimeException.class) does?

And if a RuntimeException IS thrown, does the fail("Expected RuntimeException to be thrown"); line not get executed, making the JUnit test succeed?

Why is the ap.1combine(cp1); line not under a try and catch block? (When do you need to use a try and catch block?)

As you can see I'm pretty confused and could use some clarification