package com.gkhy.exam.admin;
|
|
import com.alibaba.fastjson2.JSONArray;
|
import com.alibaba.fastjson2.JSONObject;
|
import com.gkhy.exam.system.domain.ExQuestion;
|
import com.gkhy.exam.system.service.ExQuestionService;
|
import lombok.extern.slf4j.Slf4j;
|
import org.junit.Test;
|
import org.junit.runner.RunWith;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.boot.test.context.SpringBootTest;
|
import org.springframework.test.context.ActiveProfiles;
|
import org.springframework.test.context.junit4.SpringRunner;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.Random;
|
|
@RunWith(SpringRunner.class)
|
@SpringBootTest(classes = GkhyAdminApplication.class)
|
@ActiveProfiles("dev")
|
@Slf4j
|
public class QuestionTest {
|
@Autowired
|
private ExQuestionService questionService;
|
|
// 定义选项数量
|
private static final int OPTION_COUNT = 4;
|
// 随机生成器
|
private static final Random random = new Random();
|
|
@Test
|
public void questionData(){
|
List<ExQuestion>questions=new ArrayList<>();
|
for(int i=0;i<300;i++){
|
ExQuestion question=generateSingleQuestion();
|
questions.add(question);
|
question=generateMultiQuestion();
|
questions.add(question);
|
question=generateJudgeQuestion();
|
questions.add(question);
|
if(questions.size()>100){
|
questionService.saveBatch(questions);
|
questions.clear();
|
}
|
}
|
if(questions.size()>0){
|
questionService.saveBatch(questions);
|
questions.clear();
|
}
|
// ExQuestion question=generateSingleQuestion();
|
// System.out.println(question);
|
// question=generateMultiQuestion();
|
// System.out.println(question);
|
// question=generateJudgeQuestion();
|
// System.out.println(question);
|
}
|
|
// 生成单选题目
|
public ExQuestion generateSingleQuestion() {
|
int a=random.nextInt(1000);
|
int b=random.nextInt(1000);
|
int sum=a+b;
|
List<String> options=new ArrayList<>();
|
options.add("A");
|
options.add("B");
|
options.add("C");
|
options.add("D");
|
int index=random.nextInt(4);
|
String title="算术运算题,整数"+a+"与整数"+b+"之和,等于多少?";
|
JSONObject object=new JSONObject();
|
object.put("analyze","无");
|
JSONArray jsonArray=new JSONArray();
|
for(int i=0;i<4;i++){
|
if(i==index){
|
JSONObject itemObject=new JSONObject();
|
itemObject.put("prefix",options.get(index));
|
itemObject.put("content",sum);
|
jsonArray.add(itemObject);
|
}else{
|
JSONObject itemObject=new JSONObject();
|
itemObject.put("prefix",options.get(i));
|
itemObject.put("content",randomInt(sum));
|
jsonArray.add(itemObject);
|
}
|
}
|
object.put("items",jsonArray);
|
ExQuestion question=new ExQuestion();
|
question.setQuestionType(1);
|
question.setBankId(16L);
|
question.setCompanyId(21L);
|
question.setAnswer(options.get(index));
|
question.setTitle(title);
|
question.setPrivatize(0);
|
question.setContent(JSONObject.toJSONString(object));
|
return question;
|
}
|
|
// 生成多选题目
|
public ExQuestion generateMultiQuestion() {
|
int a=random.nextInt(1000);
|
int b=random.nextInt(1000);
|
int sum=a+b;
|
List<String> options=new ArrayList<>();
|
options.add("A");
|
options.add("B");
|
options.add("C");
|
options.add("D");
|
options.add("E");
|
int indexa=random.nextInt(5);
|
int indexb=random.nextInt(5);
|
String title="算术运算题,整数"+a+"与整数"+b+"之和,等于多少?";
|
JSONObject object=new JSONObject();
|
object.put("analyze","无");
|
JSONArray jsonArray=new JSONArray();
|
for(int i=0;i<5;i++){
|
if(i==indexa){
|
JSONObject itemObject=new JSONObject();
|
itemObject.put("prefix",options.get(indexa));
|
itemObject.put("content",sum);
|
jsonArray.add(itemObject);
|
}else if(i==indexb) {
|
JSONObject itemObject=new JSONObject();
|
itemObject.put("prefix",options.get(indexb));
|
itemObject.put("content",sum);
|
jsonArray.add(itemObject);
|
}else{
|
JSONObject itemObject=new JSONObject();
|
itemObject.put("prefix",options.get(i));
|
itemObject.put("content",randomInt(sum));
|
jsonArray.add(itemObject);
|
}
|
}
|
object.put("items",jsonArray);
|
ExQuestion question=new ExQuestion();
|
question.setQuestionType(2);
|
question.setBankId(16L);
|
question.setCompanyId(21L);
|
String answer="";
|
if(indexa==indexb){
|
answer=options.get(indexa);
|
}else{
|
if(indexa>indexb){
|
answer=options.get(indexb)+","+options.get(indexa);
|
}else{
|
answer=options.get(indexa)+","+options.get(indexb);
|
}
|
}
|
question.setAnswer(answer);
|
question.setTitle(title);
|
question.setPrivatize(0);
|
question.setContent(JSONObject.toJSONString(object));
|
return question;
|
}
|
|
// 生成判断题目
|
public ExQuestion generateJudgeQuestion() {
|
int a=random.nextInt(1000);
|
int b=random.nextInt(1000);
|
int sum=a+b;
|
List<String> options=new ArrayList<>();
|
options.add("A");
|
options.add("B");
|
int index=random.nextInt(2);
|
String title="算术运算题,整数"+a+"与整数"+b+"之和,等于="+(index==0?sum:randomInt(sum));
|
JSONObject object=new JSONObject();
|
object.put("analyze","无");
|
JSONArray jsonArray=new JSONArray();
|
JSONObject itemObject=new JSONObject();
|
itemObject.put("prefix",options.get(0));
|
itemObject.put("content","是");
|
jsonArray.add(itemObject);
|
itemObject=new JSONObject();
|
itemObject.put("prefix",options.get(1));
|
itemObject.put("content","否");
|
jsonArray.add(itemObject);
|
object.put("items",jsonArray);
|
ExQuestion question=new ExQuestion();
|
question.setQuestionType(3);
|
question.setBankId(16L);
|
question.setCompanyId(21L);
|
question.setAnswer(index==0?options.get(0):options.get(1));
|
question.setTitle(title);
|
question.setPrivatize(0);
|
question.setContent(JSONObject.toJSONString(object));
|
return question;
|
}
|
|
public String randomInt(int answer){
|
int a=random.nextInt(2000);
|
while (a==answer) {
|
a = random.nextInt(2000);
|
}
|
return a+"";
|
}
|
|
|
}
|