Jeśli chodzi o FizzBuzz to o ile się nie mylę to w przypadku gdy wartość jest inna niż podzielna przez 3, 5 to ma być jakby pomijana. Czyli w Twoim przypadku jeśli żaden if nie będzie spełniony ma zwrócić pusty String:
private static final String EMPTY_STRING = "";
public static String print(int i){
if (i % 3 == 0 && i % 5 == 0) {
return "FizzBuzz";
} else if (i % 3 == 0) {
return "Fizz";
} else if (i % 5 == 0) {
return "Buzz";
}
return EMPTY_STRING;
}
Ostatni else jest zbędny. (Być może jeszcze lepszym wyjściem będzie użycie Optionala, ale nie będę mieszać). Formatowanie mimo, że to Twoje nie utrudnia czytania, to lepiej trzymać się standardowych konwencji czyli cialo if'a w nowej linii (klamry są kwestią sporną, jednak ich obecność sprawia, że w razie potrzeby można nieco wygodniej dodawać kod do danego if'a).
Co do testów:
To:
@Before
public void FizzBuzzInicialization(){
FizzBuzz fizzBuzz = new FizzBuzz();
}
jest w tym przypadku zbędne. Pierwsza rzecz, zmienna fizzBuzz to zmienna lokalna metody FizzBuzzInicialization czyli w żaden sposób nie jesteś w stanie skorzystać z tego obiektu poza tą metodą. Inna rzecz to nawet jeśli byłbyś w stanie to klasa FizzBuzz ma metodę statyczną, co oznacza, że żeby z niej skorzystać nie trzeba tworzyć obiektu klasy FizzBuzz.
Same testy technicznie są ok jedynie co może poniekąd przeszkadzać to literały i tzw. magic numbers. Przykładowo ten test:
@Test
public void FizzBuzzChceckBuzz(){
Assert.assertEquals("Buzz", FizzBuzz.print(5));
}
Co powiesz na taki zapis?
@Test
public void FizzBuzzChceckBuzz(){
final String expectedMessage = "Buzz";
final int dividedOnlyBy5 = 5;
Assert.assertEquals(expectedMessage, FizzBuzz.print(dividedOnlyBy5));
}
Elegancko widać co się skąd bierze. Nazwa testu być może też nie mówi za wiele. Często używa się konwencji shouldDoSomething (i stosuje się też pseudo bloki given when then):
@Test
public void shouldReturnBuzz(){
// given
final String expectedMessage = "Buzz";
final int dividedOnlyBy5 = 5;
// when
String actualMessage = FizzBuzz.print(dividedOnlyBy5);
// then
Assert.assertEquals(expectedMessage, actualMessage);
}
A i nazwy metod/testów pisz z małej.