Seu sistema de cobertura de teste está dizendo "ninguém nunca acessa esse campo durante os testes de unidade". Isso é o que os meios de barras vermelhas. Então, para fazê-lo ir embora você precisa para executar o código que acessa esse campo. Usando reflexão para acessar o campo para aumentar a cobertura de teste de unidade é um disparate. Mesmo que possa transformar o campo verde, não é, na verdade, usando o campo de uma forma significativa.
A maneira certa de fazer isso é exercer a classe de teste de uma forma que usos nesse campo. O serialVersionUID é usado durante a serialização / desserialização para decidir se os bytes que estão sendo lidos coincidir com o objeto que você está tentando criar uma instância.
Aqui está um exemplo simples que cobre o que você quer. Eu adicionei um teste de igualdade no final, porque isso é realmente o que você deve estar testando quando você está preocupado com o processo de serialização / desserialização.
package org.does.not.exist;
import org.junit.jupiter.api.Test;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import static org.assertj.core.api.Assertions.assertThat;
class Foo implements Serializable {
private static final long serialVersionUID = 42L;
public Foo(String value) {
this.value = value;
}
private String value;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Foo)) return false;
Foo foo = (Foo) o;
return value != null ? value.equals(foo.value) : foo.value == null;
}
@Override
public int hashCode() {
return value != null ? value.hashCode() : 0;
}
}
class StackoverflowTest {
@Test
void test() throws Exception {
Foo foo = new Foo("a string!");
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(bos);
out.writeObject(foo);
ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
ObjectInputStream in = new ObjectInputStream(bis);
Foo copied = (Foo) in.readObject();
assertThat(foo).isEqualTo(copied);
}
}
Então, fazer o acima, mas substitua Foo com sua própria classe e você deve obter cobertura.