Testing StabilityAI Image Generation Integration in RuoYi Vue Pro
A comprehensive unit test suite for validating StabilityAI image generation functionality in the RuoYi Vue Pro framework. This test class demonstrates integration with the StabilityAI API for image creation and visualization capabilities.
Test Coverage Overview
Implementation Analysis
Technical Details
Best Practices Demonstrated
yunaiv/ruoyi-vue-pro
yudao-module-ai/yudao-spring-boot-starter-ai/src/test/java/cn/iocoder/yudao/framework/ai/image/StabilityAiImageModelTests.java
package cn.iocoder.yudao.framework.ai.image;
import cn.hutool.core.codec.Base64;
import cn.hutool.core.thread.ThreadUtil;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.springframework.ai.image.ImageOptions;
import org.springframework.ai.image.ImagePrompt;
import org.springframework.ai.image.ImageResponse;
import org.springframework.ai.openai.OpenAiImageOptions;
import org.springframework.ai.stabilityai.StabilityAiImageModel;
import org.springframework.ai.stabilityai.api.StabilityAiApi;
import javax.swing.*;
import java.awt.*;
import java.util.concurrent.TimeUnit;
/**
* {@link StabilityAiImageModel} 集成测试类
*
* @author fansili
*/
public class StabilityAiImageModelTests {
private final StabilityAiApi imageApi = new StabilityAiApi(
"sk-e53UqbboF8QJCscYvzJscJxJXoFcFg4iJjl1oqgE7baJETmx");
private final StabilityAiImageModel imageModel = new StabilityAiImageModel(imageApi);
@Test
@Disabled
public void testCall() {
// 准备参数
ImageOptions options = OpenAiImageOptions.builder()
.withModel("stable-diffusion-v1-6")
.withHeight(256).withWidth(256)
.build();
ImagePrompt prompt = new ImagePrompt("great wall", options);
// 方法调用
ImageResponse response = imageModel.call(prompt);
// 打印结果
String b64Json = response.getResult().getOutput().getB64Json();
System.out.println(response);
viewImage(b64Json);
}
public static void viewImage(String b64Json) {
// 创建一个 JFrame
JFrame frame = new JFrame("Byte Image Display");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(800, 600);
// 创建一个 JLabel 来显示图片
byte[] imageBytes = Base64.decode(b64Json);
JLabel label = new JLabel(new ImageIcon(imageBytes));
// 将 JLabel 添加到 JFrame
frame.getContentPane().add(label, BorderLayout.CENTER);
// 显示 JFrame
frame.setVisible(true);
ThreadUtil.sleep(1, TimeUnit.HOURS);
}
}