28 Stimmen

Gibt es ein Framework wie Factory Girl für Java?

Factory Girl ist ein praktisches Framework in Rails zur einfachen Erstellung von Instanzen von Modellen für Tests.

Von der Factory Girl-Startseite :

factory_girl ermöglicht es Ihnen, schnell Prototypen für jedes Ihrer Modelle zu definieren und nach Instanzen mit Eigenschaften zu fragen, die für den jeweiligen Test wichtig sind.

Ein Beispiel (auch von der Homepage):

Factory.sequence :email do |n|
    "somebody#{n}@example.com"
end

# Let's define a factory for the User model. The class name is guessed from the
# factory name.
Factory.define :user do |f|
    # These properties are set statically, and are evaluated when the factory is
    # defined.
    f.first_name 'John'
    f.last_name  'Doe'
    f.admin      false
    # This property is set "lazily." The block will be called whenever an
    # instance is generated, and the return value of the block is used as the
    # value for the attribute.
    f.email      { Factory.next(:email) }
end

wenn ich einen Benutzer brauche, kann ich einfach aufrufen

test_user = Factory(:user, :admin => true)

was einen Benutzer mit allen im Prototyp der Fabrik angegebenen Eigenschaften ergibt, außer für die Admin-Eigenschaft, die ich explizit angegeben habe. Beachten Sie auch, dass die E-Mail-Fabrik-Methode jedes Mal, wenn sie aufgerufen wird, eine andere E-Mail liefern wird.

Ich denke, es sollte ziemlich einfach sein, etwas Ähnliches für Java zu implementieren, aber ich möchte das Rad nicht neu erfinden.

P.S.: Ich kenne sowohl JMock als auch EasyMoc, aber ich spreche hier nicht von einem Mocking Framework.

-3voto

silmx Punkte 486

Wenn Ihre Modellobjekte einfach sind, gibt es keinen Grund, ein Framework zu verwenden, um sie zu erstellen, verwenden Sie einfach den Operator "new". Wenn Sie ein komplexes Modell haben (komplexe Beziehungen), können Sie Spring verwenden, um sie miteinander zu verbinden (auch in Testszenarien können Sie Spring verwenden)

  • aber dies ist einfach für Datenobjekte, wenn Sie über die Instanziierung von Objekten sprechen, die etwas tun, wird empfohlen, mock/stub die externen Beziehungen anstelle von echten Instanzen zu verwenden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X