I'm writing a test for a method that returns Writer
for different extension files.
For .gz
returns new OutputStreamWriter(new GZIPOutputStream(new FileOutputStream(file)), StandardCharsets.UTF_8)
For non compressed files returns new OutputStreamWriter(new FileOutputStream(file), StandardCharsets.UTF_8);
How to assert that OutputStreamWriter contains GZIPOutputStream
or FileOutputStream
?
OutputStreamWriter extends Writer. Your FileOutputStream or GZIPOutputStream is set as: protected Object lock inside Writer class.
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(new FileOutputStream(new File("file_patch")), StandardCharsets.UTF_8);
Field lock = outputStreamWriter.getClass().getSuperclass().getDeclaredField("lock");
lock.setAccessible(true);
Object o = lock.get(outputStreamWriter);
Class<?> theClassYouNeed = o.getClass();
Now you just need to check if theClassYouNeed is the expected class.