Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Black-Panther

Alter Hase

  • »Black-Panther« ist der Autor dieses Themas

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

1

06.05.2006, 20:22

Softwaretesting

15%

Ja, natürlich (4)

69%

Hä?? (18)

15%

Nein, zu aufwändig! (4)

Ich wollte nur mal wissen wer von euch seinen Code testet (UnitCpp oder andere) und mit was...
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

babelfish

Alter Hase

Beiträge: 1 222

Wohnort: Schweiz

Beruf: Informatiker

  • Private Nachricht senden

2

06.05.2006, 20:30

Hä?? ;) :-D
Hab' noch nie davon gehört,
könnte mir mal bitte jemand erklären worum es dabei geht? :angel:
Hört sich interessant an...

Anonymous

unregistriert

3

06.05.2006, 21:18

Hä?

DarkFitzi

Alter Hase

Beiträge: 608

Wohnort: Eisenberg, Thüringen

Beruf: Schüler, 10te Klasse

  • Private Nachricht senden

4

06.05.2006, 21:27

Hä?
noch nie gehört :roll:
Ich würde die Welt gern verbessern, doch Gott gibt mir den Sourcecode nicht! :-(

babelfish

Alter Hase

Beiträge: 1 222

Wohnort: Schweiz

Beruf: Informatiker

  • Private Nachricht senden

5

06.05.2006, 21:42

Phew, ich dachte schon ich wäre der einzige der nix versteht :-D
Da bin ich aber erleichtert ;p

Sheddex

unregistriert

6

06.05.2006, 21:48

Hä? ;)

Helmut

5x Contest-Sieger

Beiträge: 692

Wohnort: Bielefeld

  • Private Nachricht senden

7

06.05.2006, 21:53

Das bedeutet, dass man für jede Komponente/Klasse eines Programms ein kleines Testprogramm ans Ende der Datei einfügt, welches überprüft, ob die Komponente richtig funktioniert.
Wenn man zB eine Inputklasse geschrieben hat erstellt man in dem Unittest ein Fenster und testet ein paar Inputsachen.

In VC ab ca Proffesional wird sowas auch direkt von der IDE unterstützt.

Folgendes ist zB eine Klasse, die ein Modell mit PerPixel Beleuchtung darstellt + Unittest:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#region Using directives
#if DEBUG
using NUnit.Framework;
#endif
using System;
using System.Collections.Generic;
using System.Text;
using RocketCommander.Graphics;
using Microsoft.DirectX.Direct3D;
using RocketCommander.Helpers;
using RocketCommander.Game;
using Texture = RocketCommander.Graphics.Texture;
using Microsoft.DirectX;
#endregion

namespace RocketCommander.Shaders
{
    class SimpleShader : IGraphicObject
    {
        #region Variables
        Effect effect = null;
        #endregion

        #region Constructor
        public SimpleShader()
        {
            effect = Effect.FromFile(GraphicForm.DirectXDevice,
                Directories.ShadersDirectory + "\\SimpleShader.fx",
                null, null, ShaderFlags.None, null);

            GraphicForm.AddGraphicObject(this);
        } // SimpleShader()

        #endregion

        #region IGraphicObject Member
        public void OnResetDevice()
        {
        }

        public void OnLostDevice()
        {
        }
        #endregion

        #region IDisposable Member
        public void Dispose()
        {
            if (effect != null)
                effect.Dispose();
        }
        #endregion

        #region Render mesh
        public void RenderMesh(Mesh someMesh, Texture texture)
        {
            GraphicForm.WorldMatrix =
                Matrix.Scaling(50, 50, 50);

            effect.SetValue("worldViewProj",
                GraphicForm.WorldMatrix *
                GraphicForm.ViewMatrix *
                GraphicForm.ProjectionMatrix);
            effect.SetValue("world",
                GraphicForm.WorldMatrix);
            effect.SetValue("viewInverse",
                GraphicForm.InverseViewMatrix);
            effect.SetValue("lightDir",
                new Vector4(
                GraphicForm.LightDir.X,
                GraphicForm.LightDir.Y,
                GraphicForm.LightDir.Z, 1.0f));
            effect.SetValue("diffuseTexture",
                texture.D3DTexture);

            effect.Technique = "SpecularPerPixel";

            int passes = effect.Begin(FX.None);
            for (int pass = 0; pass < passes; pass++)
            {
                effect.BeginPass(pass);
                someMesh.DrawSubset(0);
                effect.EndPass();
            } // for

            effect.End();
        } // RenderMesh(someMesh, texture)

        #endregion

        #region Unit Testing
#if DEBUG
        [Test]
        public static void TestSimpleShader()
        {
            SimpleShader shader = null;
            Mesh teapot = null;
            Texture testTexture = null;

            GameForm.StartTest("Test SimpleShader.fx",
                delegate
                {
                    shader = new SimpleShader();
                    teapot = Mesh.Teapot(GraphicForm.DirectXDevice);
                    Model.GenerateNormalsAndTangentsIfNotPresent(ref teapot, false);
                    testTexture = new Texture("Marble.jpg");
                },
                delegate
                {
                    shader.RenderMesh(teapot, testTexture);
                });
        } // TestSimpleShader

#endif
        #endregion
    } // class SimpleShader

} // namespace RocketCommander.Shaders

www.rocketcommander.com

Ciao

Phil_GDM

Alter Hase

Beiträge: 443

Wohnort: Graz

Beruf: Student-Softwareentwicklung u. Wissensmanagement

  • Private Nachricht senden

8

07.05.2006, 07:17

Zitat von »"Helmut"«


In VC ab ca Proffesional wird sowas auch direkt von der IDE unterstützt.

afaik leider erst ab TeamSystem

Ich verwende Unit-Tests wo es nur geht.
Ist wirklich ein geniales Konzept und hilft einfach dabei, qualitativ hochwertigere,fehlerfreiere... Software zu erstellen.

Leider gibt es zur Zeit nur wenige gute/einfache Frameworks für C++.
Der einzige der mich derzeit zufriedenstellen konnte ist CxxTest (obwohl dieser über Perl arbeitet :o ).
Dieser war auch der einzige, der sich so in VS integrieren ließ, dass die Tests mittlerweile wirklich automatisiert ablaufen können.

BTW: Kenn jemand ein Framework für funktionales Testen?

mfg Philipp

Anonymous

unregistriert

9

07.05.2006, 10:38

Für was braucht man sowas?! Wenn ich Programme teste, dann aber per Hand und bis sie verrecken.

Dafür benötige ich kein Programm und um Code zu testen? Wozu sollte ich meinen Code testen? ;)

Phil_GDM

Alter Hase

Beiträge: 443

Wohnort: Graz

Beruf: Student-Softwareentwicklung u. Wissensmanagement

  • Private Nachricht senden

10

07.05.2006, 11:08

Zitat von »"nix da"«

Für was braucht man sowas?! Wenn ich Programme teste, dann aber per Hand und bis sie verrecken.


Im Internet findet man genug Artikel und Papers, die die Vorteile von automatisiertem Testen beschreiben.

mfg Philipp

Werbeanzeige