2015-05-18 6 views
6

कभी-कभी मुझे अपने परीक्षण मामलों में पीओजेओ लिखने के लिए, लंबे समय तक नकल करने की आवश्यकता होती है। मैं सोच रहा था कि क्या वैसे भी मैं Intellij (14) में डीबग चर डेटा से mocks उत्पन्न कर सकता है?इंटेलिज में डीबग वैरिएबल वैल्यू से नकली कैसे उत्पन्न करें?

- myClasses = {[email protected]} size = 5 
    - 0 = {[email protected]} 
     - aVariableWithARatherLongName1 = {String} "value 1" 
     - aVariableWithARatherLongName2 = {Double} 2.0 
     - aVariableWithARatherLongName3 = {String} "value 1" 
     ... 
    - 1 = {[email protected]} 
     - aVariableWithARatherLongName1 = {String} "value 2" 
     - aVariableWithARatherLongName2 = {Double} 2.0 
     - aVariableWithARatherLongName3 = {String} "value 2" 
     ... 
    + 2 = {[email protected]} 
    + 3 = {[email protected]} 
    + 4 = {[email protected]} 

और फिर प्लगइन या Intellij उत्पन्न होगा:

public class MyClass{ 
    private String aVariableWithARatherLongName1; 
    private Double aVariableWithARatherLongName2; 
    private String aVariableWithARatherLongName3; 
    private Long aVariableWithARatherLongName4; 
    private String aVariableWithARatherLongName5; 
    private Boolean aVariableWithARatherLongName6; 
    private String aVariableWithARatherLongName7; 
    private String aVariableWithARatherLongName8; 
    private String aVariableWithARatherLongName9; 
    private String aVariableWithARatherLongName10; 
    private String aVariableWithARatherLongName11; 
    private String aVariableWithARatherLongName12; 

    //getters & setters 
} 

और मेरे डिबग चर दृश्य के भीतर मैं MyClass चरों की सूची होगा:

एक उदाहरण के रूप में, हम एक वर्ग है चयनित भाषा के आधार पर नीचे की तरह कुछ (इस उदाहरण में ग्रोवी):

def mockedResults(){ 
    [ 
     new MyClass(aVariableWithARatherLongName1: 'value 1', aVariableWithARatherLongName2: 2.0, aVariableWithARatherLongName3: 'value 1', ...), 
     new MyClass(aVariableWithARatherLongName1: 'value 2', aVariableWithARatherLongName2: 2.0, aVariableWithARatherLongName3: 'value 2', ...), 
     new MyClass(aVariableWithARatherLongName1: 'value 3', aVariableWithARatherLongName2: 2.0, aVariableWithARatherLongName3: 'value 3', ...), 
     new MyClass(aVariableWithARatherLongName1: 'value 4', aVariableWithARatherLongName2: 2.0, aVariableWithARatherLongName3: 'value 4', ...), 
     new MyClass(aVariableWithARatherLongName1: 'value 5', aVariableWithARatherLongName2: 2.0, aVariableWithARatherLongName3: 'value 5', ...), 
    ] 
} 

इंटेलिज (14) के साथ ऐसा कुछ संभव है या ऐसे कोई प्लगइन हैं जो इस तरह की कार्यक्षमता प्रदान करते हैं?

+0

एक ही सवाल है, वेब खोज की है, कुछ भी नहीं मिला अगर मुझे कुछ मिल जाए तो मैं यहां पोस्ट करूंगा। – Benj

उत्तर

0

मुझे डिफ़ॉल्ट रूप से इंटेलिज करने के तरीके के बारे में पता नहीं है। तो नीचे groovy कोड की तरह कुछ काम करना चाहिए। यह आपके उदाहरण में मौजूद वस्तुओं की सूची को संभालने में सक्षम होने के लिए थोड़ा और अधिक काम करेगा।

public class ObjectBuilder { 
Object object 

private static final Map PREFIXES = [(String.class): "\"", (Integer.class): "", (Boolean.class): "", (Double.class): "", (Long.class): ""] 
private static final Map SUFIXES = [(String.class): "\"", (Integer.class): "", (Boolean.class): "", (Double.class): "d", (Long.class): ""] 

ObjectBuilder(Object object) { 
    this.object = object 
} 

def build() { 
    List properties = [] 
    object.getClass().getDeclaredFields().each { 
     if(!it.isSynthetic()) { 
      String propertyName = it.getName() 
      properties << "$propertyName: ${PREFIXES.get(it.getType())}${object[propertyName]}${SUFIXES.get(it.getType())}" 
     } 
    } 
    println "new ${object.getClass().getSimpleName()}(${properties.join(", ")})" 
} 
} 

मैं निम्नलिखित कोड के साथ परीक्षण किया (अपने MyClass उदाहरण से उधार:

MyClass myClass1 = new MyClass() 
myClass1.aVariableWithARatherLongName1 = "blah" 
myClass1.aVariableWithARatherLongName2 = 2.0d 
myClass1.aVariableWithARatherLongName4 = 23105 
myClass1.aVariableWithARatherLongName6 = new Boolean(true) 

MyClass myClass2 = new MyClass() 
myClass2.aVariableWithARatherLongName1 = "other" 
myClass2.aVariableWithARatherLongName2 = 4.0d 
myClass2.aVariableWithARatherLongName4 = 123 
myClass2.aVariableWithARatherLongName6 = new Boolean(false) 


new ObjectBuilder(myClass1).build() 
new ObjectBuilder(myClass2).build() 

कौन मेरा पीछा उत्पादन दिया:

new MyClass(aVariableWithARatherLongName1: "blah", aVariableWithARatherLongName2: 2.0d, aVariableWithARatherLongName4: 23105, aVariableWithARatherLongName6: true) 
new MyClass(aVariableWithARatherLongName1: "other", aVariableWithARatherLongName2: 4.0d, aVariableWithARatherLongName4: 123, aVariableWithARatherLongName6: false) 
संबंधित मुद्दे