joel
joel

Reputation: 283

ERROR in flutter: widget_test.dart cannot detect MyApp()

Being a total beginner I am trying out various flutter feature and I am stuck at running the main.dart due to errors in the widget_test.dart file. Please point out if the error is due to some other reason.

main.dart

import 'package:flutter/material.dart';
 void main(){
   var app = MaterialApp(
     title: 'FlutterApp',
     debugShowCheckedModeBanner: true,
     theme: ThemeData(
        primaryColor: Colors.black12,
        accentColor: Colors.orange,
     ),
     home: Scaffold(
       appBar: AppBar(
         title: Text('Stateless'),
         backgroundColor: Colors.black,
         ),
   ),
   );
   runApp(app);
 }

widget_test.dart

// This is a basic Flutter widget test.
//
// To perform an interaction with a widget in your test, use the WidgetTester
// utility that Flutter provides. For example, you can send tap and scroll
// gestures. You can also use WidgetTester to find child widgets in the widget
// tree, read text, and verify that the values of widget properties are correct.

import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';

import 'package:stateless/main.dart';

void main() {
  testWidgets('Counter increments smoke test', (WidgetTester tester) async {
    // Build our app and trigger a frame.
    await tester.pumpWidget(MyApp()); //error over here

    // Verify that our counter starts at 0.
    expect(find.text('0'), findsOneWidget);
    expect(find.text('1'), findsNothing);

    // Tap the '+' icon and trigger a frame.
    await tester.tap(find.byIcon(Icons.add));
    await tester.pump();

    // Verify that our counter has incremented.
    expect(find.text('0'), findsNothing);
    expect(find.text('1'), findsOneWidget);
  });
}

This is my very first question and I a very sorry if I couldn't place the question in a proper way

Upvotes: 12

Views: 41217

Answers (9)

Navya Govil
Navya Govil

Reputation: 1

I was facing the same issue but turns out it was because I was using an older version.

doing flutter upgrade or fluter upgrade --force will update your flutter version and it shouldn't show the problem anymore

Upvotes: 0

Try this:

flutter packages get

Upvotes: -1

Tommie C.
Tommie C.

Reputation: 13181

Solution

At top of your pubspec.yaml make sure to verify the name of your project is a match with the name of the imported package listed in your import statement of the test widget.

After you verify this information run flutter pub get to sync the dependencies again.

In my case this resolved the improper name resolution.

Upvotes: 1

aslaqrahman
aslaqrahman

Reputation: 9

Just remove all lines in widget_test.dart file. Empty it.. It is used for testing widgets (not necessary)......

Upvotes: -2

ehabo73
ehabo73

Reputation: 21

After you create a file named another_file.dart

You must add:

import '../test/another_file.dart';

in widget_test.dart

Upvotes: 2

Vijay Singh
Vijay Singh

Reputation: 320

It's simple, you can just replace MyApp name with your class name in widget_test.dart file.

eg. replace MyApp with app (in your case) in widget_test.dart file

Upvotes: 3

Rohan Sadnani
Rohan Sadnani

Reputation: 11

Your App name is MaterialApp in the main.dart file so as in widget_test.dart file change the MyApp name to MaterialApp as simple as that.

I'am also new to flutter but solving these kind of small problem's gives me a heads up, instead of giving solutions which are a little confusing to follow.

Upvotes: 0

Tejas MD
Tejas MD

Reputation: 21

I just figured out, the solution is just putting in your actual Stateful Widget name instead of the default 'MyApp' given by the default Tap Counter app!

Upvotes: 2

wenolOaR
wenolOaR

Reputation: 286

It would be better if you also told us the error message you got. However, from what I see, there is no MyApp defined in widget_test.dart.

You can define a MyApp widget in another file and then import it in your widget_test.dart.

An example would be:

another_file.dart

class MyApp extends StatelessWidget {
  const MyApp({Key key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
     title: 'FlutterApp',
     debugShowCheckedModeBanner: true,
     theme: ThemeData(
        primaryColor: Colors.black12,
        accentColor: Colors.orange,
     ),
     home: Scaffold(
       appBar: AppBar(
         title: Text('Stateless'),
         backgroundColor: Colors.black,
         ),
   ),);
  }
}

widget_test.dart

import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';

import 'package:stateless/another_file.dart';

void main() {
  testWidgets('My test', (WidgetTester tester) async {
    // Build our app and trigger a frame.
    await tester.pumpWidget(MyApp());
  });
}

Upvotes: 14

Related Questions