2

次の構造をYAMLファイルにダンプしたいと思います。

public class TestSuite {
    String name
    List testCases = []
}

テストケースのリストがこのクラスである場合:

class TestCase {
    String name
    String id
}

私がそれをどのように見せたいかはこれです:

name: Carrier Handling and Traffic
testCases:
- name: Call setup by UE
  id: DCM00000001

しかし、最終的には次のようになります。

name: Carrier Handling and Traffic
testCases:
- !!com.package.path.TestCase
  name: Call setup by UE
  id: DCM00000001

リストがタグ付きのデータ構造ではないという事実に関係していると思いますが、オブジェクトを表すテストケースの名前を取得する方法がわかりません。チップ?

4

1 に答える 1

5

次のように定義TestSuiteします:

public class TestSuite {
    String name
    List<TestCase> testCases = []
}

望む結果に近づきますか?SnakeYaml は自分では使っていませんが...


編集

自由な時間があったので、次のスタンドアロン テスト スクリプトを思いつきました。

@Grab( 'org.yaml:snakeyaml:1.10' )
import org.yaml.snakeyaml.Yaml
import org.yaml.snakeyaml.representer.Representer
import java.beans.IntrospectionException
import org.yaml.snakeyaml.introspector.Property

public class TestSuite {
    String name
    List<TestCase> testCases = []
}

class TestCase {
    String name
    String id
}

class NonMetaClassRepresenter extends Representer {
  protected Set<Property> getProperties( Class<? extends Object> type ) throws IntrospectionException {
    super.getProperties( type ).findAll { it.name != 'metaClass' }
  }
}

TestSuite suite = new TestSuite( name:'Carrier Handling and Traffic' )
suite.testCases << new TestCase( name:'Call setup by UE', id:'DCM00000001' ) 

println new Yaml( new NonMetaClassRepresenter() ).dumpAsMap( suite )

どちらが印刷されますか:

name: Carrier Handling and Traffic
testCases:
- id: DCM00000001
  name: Call setup by UE
于 2012-05-01T10:06:10.743 に答える